为啥浏览器可以保存网页中js动态内容,用java编写的爬虫却无法抓取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥浏览器可以保存网页中js动态内容,用java编写的爬虫却无法抓取相关的知识,希望对你有一定的参考价值。

爬虫最多只能抓取页面加载完毕时的内容,怎么可能慢慢等你网页后续动态显示出来的内容呢 参考技术A rhino: 本身只是java界用来处理js脚本的一个脚本引擎,跟浏览器这种大而全的东西还差的远,摘一段官方的说明:“Rhino 是一个完全使用Java语言编写的开源javascript实现。Rhino通常用于在Java程序中,为最终用户提供脚本化能力。”,这里主要反映了一个问题,看到没,人家也只是当一个脚本解释引擎,你传递进去它就执行,它不认识html这些文本,如果爬虫要解析页面上的js,需要你先对html上的js自己解析一遍,拿出来,放到rhino里面解释,解释完了以后又要保留这个Context,要知道js在浏览器上执行都是有Context的,在JDK8里面乌龟壳又引进了Nashorn这个新的引擎,最重要的是对一些新的js语法和规范提供了支持,但是跟真正的浏览器js引擎相比还是有点差别,想必你也没听说过哪家的前端还专门为rhino/Nashorn提供兼容的吧?

以上是关于为啥浏览器可以保存网页中js动态内容,用java编写的爬虫却无法抓取的主要内容,如果未能解决你的问题,请参考以下文章

用python抓取的网页保存后为啥乱码?

html小问题:网页中为啥有些内容在html源文件中看不到相应关键字?

怎么爬取网页的动态内容,很多都是js动态生

如何用python爬取js动态生成内容的页面

js的网页爬虫爬不到吗

如何用java或js或jQuery将打开的网页保存成一个图片