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);
优点:
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);
相关文章推荐
- MarkdownPad 2 在win10下html渲染错误This view has crashed
- 给select增加placeholder技巧
- html中radio的checked与选中
- Html代码中table跨2行和跨2列的用法
- C# ASP.NET MVC HtmlHelper用法大全
- 在MVC的cshtml视图页获取默认路由下的ID值的方法
- MVC中的Html.ActionLink
- 111.html测试测量角度 自己看别人看了没用
- 在html静态页面按钮链接,给button加上提交的链接等方法
- 写个html下载swf
- HTML与XML的优缺点
- 从图片中提取html格式的布局
- html的块级元素和内联元素
- 【HTML】html 小技巧
- 1.html的基本概念的学习
- Web设计——初识HTML
- html.day02
- html.day01
- html cookie
- html基本构成元素