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

近期需要抓取一些数据,而这些数据都是需要从后台进行异步请求获取的。故图个方便使用了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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值