您的位置:首页 > Web前端 > HTML

HTMLUnit进行模拟浏览器抓取优劣

2015-09-06 14:34 155 查看
近期需要抓取一些数据,而这些数据都是需要从后台进行异步请求获取的。故图个方便使用了HtmlUnit这个开源工具进行开发。现整理一下其优劣点:

优点:

1.可以模仿浏览器对服务器进行请求,能够抓取几乎网络上浏览器能看到的所有信息。

2.用户操作接口比较便捷,比如click、focus等元素事件可直接在获取DOMElement等元素对象后直接使用。

3.上手比较快,按照用户操作浏览器习惯,逻辑清晰、代码易开发。

4.抓取成功率高,不易被网站拉入黑名单。

缺点:

1.获取元素对象方式不够丰富,如没有根据属性和值以及class等获取元素集的接口。

2.操作速度比较慢,当然这也恰好可以不被有反爬虫机制的网站拉入黑名单。

对于缺点1,因此一般可以利用HtmlUnit和Jsoup组合进行开发,Jsoup操作可以仿照jQuery进行,获取元素接口丰富。

但是从HtmlUnit的元素对象可以根据asXml()转化为String类型,然后根据Jsoup的 Jsoup.parse(String html)方法进行转化。反之则不可(也可能自己没有深入学习,如有错误敬请指出。)

对于缺点2,则是几乎不能避免,浏览器请求服务器后台也需要时间,为了提升抓取的成功率,在请求前,设置:.client.setAjaxController(new NicelyResynchronizingAjaxController());以及在请求数据的操作后添加:client.waitForBackgroundJavaScript(10000);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: