码迷,mamicode.com
首页 > 编程语言 > 详细

Java抓取利用JS动态加载的网页

时间:2014-08-27 18:05:08      阅读:1308      评论:0      收藏:0      [点我收藏+]

标签:http   java   使用   ar   数据   问题   代码   html   sp   

最近实验室项目涉及到很多爬虫相关的东西,在此做个整理,爬虫最难的问题应该是javascript和ajax的处理。现在很多网站使用大量ajax,普通爬虫无法获取js生成的内容。 

对于普通的静态网页,HttpClient是Java中抓取网页的利器,然而针对像京东商品页面这样的页面却无能为力,例如:http://item.jd.com/10875285.html

主要原因是页面中的一部分信息比如商品评论是通过JavaScript异步加载的,如果直接通过HttpClient直接抓取只会得到其中的js代码,我们需要的信息却没有得到,解决这个问题有一下几个思路

方法一:分析浏览器加载页面的过程,找到JS加载数据的URL,用爬虫代码来模拟js代码,js读取页面元素值,我们也读取页面元素值;js发送ajax,我们就拼凑参数、发送ajax并解析返回的json。理论上,这种方法肯定可行,但太麻烦。

方法二:使用HtmlUnit,它可以模拟浏览器运行,解析JavaScript,但它对JS支持,并不是足够好,面对包含复杂JS的页面会发生错误,至少京东商品页面的抓取,用HtmlUnit就做不到

方法三:利用Selenium调用浏览器获取动态HTML值,再调用其API,可以很方面获取动态数据。由于是调用第三方像IE Chrome这样的浏览器,这种方法对JS的解析绝对可靠,但由于每个请求都会启动一个浏览器进程,同时浏览器还会加载图片等其他各种资源,所以效率会很低

 

Java抓取利用JS动态加载的网页

标签:http   java   使用   ar   数据   问题   代码   html   sp   

原文地址:http://www.cnblogs.com/flyingsnail/p/3939833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!