爬小说时内容被js加密,怎么办?
学了爬虫后爬小说玩,一直比较顺利,可最近遇到了一个用js加密内容的小说,让我很是头疼。这个小说章节是:https://www.sztjgold.com/chapter.html?1#mybookid=96803&bookid=108841&chapterid=48935289
通过抓包到得真实网址是:https://www.sztjgold.com/files/article/html555/108/108841/48935289.html
结果得到一堆英文数据,经查百度是js数据。 猜测小说内容、解密函数、小说参数等都在数据中,格式化后的js数据表面看起来也很完美,但用js工具运行时却老是提示错误,无法得到结果。猜测js数据中设计有让js运行出错的代码。浏览器能运行它,是因为浏览器在得到这段数据后先对数据进行了处理,去除其中的错误数据。但要找到浏览器是怎么处理的,就应该很熟悉浏览器前端及js知识了。后来看了很多的文章,说selenium可以抓取,试了一下,果然行。但处理速度很慢慢,有些时候还爬取不下来。所以想请教论坛的大牛们几个问题:
1、如何改写这段js数据?思路、方法及有什么工具。
2、除了使用selenium外,还有没有速度更快的方法?
附上我的方法:
这两在才了解了一下油猴脚本,或许这是一个很好的解决方案 帮你顶一下 看着像base64位加密,也有url_encode加密,也有不用加密被过滤掉的关键词,经过了几轮处理. 换个网站抓取 谢谢楼主分享! 你确定内容是js加密?
目前的小说网可没这么高级
渲染到html中的一定是真实文本
最多搞嵌套结构让你复制错误 是不是编码存在问题?
小说网站一般不会加密吧 这没被加密啊- -。 哪有那么复杂,仔细看代码,人家帮你写好了
var jz='正在加载中.....(如果长时间加载不出来可以刷新页面)<br>';
//取正文
function get_content(){
$("#txt").html(errorstr+jz);
//取正文的url地址
xid=Math.floor(bookid/1000)
var url_get_data=ymurl+'/files/article/html555/'+xid+'/'+bookid+'/'+chapterid+'.html';
var url_get_text=url_get_data;
$.ajax({
type: "GET",
url: url_get_text,
dataType: "script",
cache: true,
success: function(msg){
msg=cctxt;
//console.log('ajax返回后执行:'+url_get_text)
//console.log(msg)
//数据更新到页面
$("#txt").html(msg+errorstr);
}
});
}
上面的msg就是返回的小说正文,无加密。传入的是章节、小说ID之类的信息,返回给你没有加密的正文。也就意味你直接调用这个接口,完全就能遍历全部的小说章节