HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题
来源:互联网 发布:js保留两位 编辑:程序博客网 时间:2024/05/17 06:26
http://www.csdn123.com/html/itweb/20131017/171720.htm
本人最近在研究爬虫。作为一个新手。研究了些爬虫框架,发现所有开源的爬虫框架很多,功能也很齐全,但唯独遗憾的是,目前还没有发现那个爬虫对js完美的解释并执行。看了浅谈网络爬虫爬js动态加载网页(二)之后很有感慨,首先对博主的钻研精神季度敬佩。虽然该文中第二和第三种方案不怎么靠谱,但能想到这些方案,说明博主的思维发散性很强,不会局限于单方向钻牛角尖式的思考。不过很遗憾,因为我就是这样的人。我始终觉得博主对于HtmlUnit的了解不够深入(也可能是我的误解)。于是就开始钻牛角尖了。看了HtmlUnit的简介之后,我有一种预感,认为HtmlUnit没理由不能支持Js的自动解释于执行,事实证明了我的想法。 废话多说无益,
这里拿地址【http://cq.qq.com/baoliao/detail.htm?294064】来测试,通过查看该页面源码,可以发现,该页面文章标题,内容,浏览量都是采用占位符的形式,在页面加载时,通过js替换之,下面代码获取该文章浏览量字段。
public void testCrawler() throws Exception { /**HtmlUnit请求web页面*/ WebClient wc = new WebClient(); wc.getOptions().setJavaScriptEnabled(true); //启用JS解释器,默认为true wc.getOptions().setCssEnabled(false); //禁用css支持 wc.getOptions().setThrowExceptionOnScriptError(false); //js运行错误时,是否抛出异常 wc.getOptions().setTimeout(10000); //设置连接超时时间 ,这里是10S。如果为0,则无限期等待 HtmlPage page = wc.getPage("http://cq.qq.com/baoliao/detail.htm?294064"); String pageXml = page.asXml(); //以xml的形式获取响应文本 /**jsoup解析文档*/ Document doc = Jsoup.parse(pageXml, "http://cq.qq.com"); Element pv = doc.select("#feed_content span").get(1); System.out.println(pv.text()); Assert.assertTrue(pv.text().contains("浏览")); System.out.println("Thank God!"); }
附上maven配置:
<dependency> <!-- jsoup HTML parser library @ http://jsoup.org/ --> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.13</version> </dependency>
更多信息请查看个人博客:http://www.iamcoder.net
1 1
- HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题
- htmlunit爬取javascript、Ajax 动态生成的网页;jsoup解析XML文档
- htmlunit应用到爬虫上来解析JS的问题(javascirpt 解析)
- HtmlUnit爬虫解决url中文
- Jsoup爬虫是class有多个空格无法解析
- 爬虫-jsoup 数据解析
- Java爬虫进阶-HtmlUnit使用解析
- 解决IE无法执行脚本的问题
- HtmlUnit、httpclient、jsoup爬取网页信息并解析
- HtmlUnit、httpclient、jsoup爬取网页信息并解析
- HtmlUnit、Httpclient、Jsoup爬取网页信息并解析
- Java 爬虫工具Jsoup解析
- Jsoup -- 网络爬虫解析器
- nodejs爬虫程序暂时无法解决的乱码问题汇总
- 最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
- 解决域名无法解析的网址问题
- Eclipse无法解析类型问题的解决
- [Jsoup] Jsoup解析中需要注意的问题
- kafka 学习笔记(四)之Python客户端
- uplooking-C语言基础
- WebClient在多线程、使用代理情况下 socket closed 问题的一个解决办法[htmlunit]
- .NET程序员学习书籍
- 利用HtmlUnit 模拟浏览器抓取网页数据
- HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题
- myeclipse+maven实现多模块项目struts+spring+mybatis
- MyEclipse + Maven开发Web工程的详细配置过程
- Fedora 22 GNOME 3 加入 IBus Rime 之粵拼、倉頡五代、倉頡快打模式及速成支援
- leetcode 235: Lowest Common Ancestor of a Binary Search Tree
- Fedora 20 GNOME 3 加入 IBus 速成輸入法支援
- 解决MyEclipse开启后总是不停的在Update index
- jQuery第二弹强大的选择器
- 對 RIME 輸入法粵拼詞庫的點點建議