大数跨境
0
0

网络爬虫好帮手 HtmlUnit

网络爬虫好帮手 HtmlUnit 曼昂网络爬虫
2015-10-09
1
导读:简介 对于Java程序,HtmlUnit是一个“无界面的浏览器”。以 HTML documents 为模

简介
对于Java程序,HtmlUnit是一个“无界面的浏览器”。以 HTML documents 为模型,且提供了一个API允许你来调用页面、填写表单、点击链接等等,就像操作一般的浏览器一样。
line-height: 10px;"> 其对于JavaScript的支持非常强大(且在持续提升),甚至能够支持相当复杂的Ajax库,可以通过配置来模拟你想模拟的FireFox或Internet Explorer浏览器。
HtmlUnit常常用来测试或者检索网站的数据。
HtmlUnit不是一般的单元测试框架,以一个特别的方法来模拟浏览器从而达到测试的目的,常常在另外的测试框架如Junit 或 TestNg中使用。
与一些开源的工具Canoo WebTest, JWebUnit, WebDriver, JSFUnit, Celerity不同,被当做一个看不见的浏览器来使用。


特性

  • 支持HTTP和HTTPS协议

  • 支持cookies

  • 能够制定当从服务端获取响应失败时,是抛出异常还是根据内容类型返回特定的页面

  • 支持提交方法 POST和GET (HEAD, DELETE, ...)

  • 能够定制发送到服务器的请求信息报头

  • 对Html响应的支持

  • 支持代理服务器

  • 支持基本的和 NTLM 认证

  • 非常优秀的JavaScript支持


JavaScript支持

HtmlUnit提供非常棒的JavaScript支持,根据配置来模拟浏览器的工作(Firefox 和 internet explore)。运用了Rhino JavaScript 引擎。

一些知名的用于单元测试的JavaScript库包含在HtmlUnit中:

  • jQuery 1.2.6: Full support

  • MochiKit 1.4.1: Full support

  • GWT 2.0.0: Full support

  • Sarissa 0.9.9.3: Full support

  • MooTools 1.2.1: Full support

  • Prototype 1.6.0: Very good support

  • Ext JS 2.2: Very good support

  • Dojo 1.0.2: Good support

  • YUI 2.3.0: Good support

如果要在一个WebClient中关闭JavaScript,调用 WebClient.setJavaScriptEnabled(false)


这是HtmlUnit很好用的一个功能,对于那些页面中使用JS生成的内容,在HtmlUnit中就可以被渲染出来


示例代码

  1. // 得到浏览器对象,直接New一个就能得到,现在就好比说你得到了一个浏览器了

  2. WebClient webclient = new WebClient();

  3. // 这里是配置一下不加载css和javaScript,配置起来很简单,是不是

  4. webclient.getOptions().setCssEnabled(false);

  5. webclient.getOptions().setJavaScriptEnabled(false);

  6. // 做的第一件事,去拿到这个网页,只需要调用getPage这个方法即可

  7. HtmlPage htmlpage = webclient.getPage("http://news.baidu.com/advanced_news.html");

  8. // 根据名字得到一个表单,查看上面这个网页的源代码可以发现表单的名字叫“f”

  9. final HtmlForm form = htmlpage.getFormByName("f");

  10. // 同样道理,获取”百度一下“这个按钮

  11. final HtmlSubmitInput button = form.getInputByValue("百度一下");

  12. // 得到搜索框

  13. final HtmlTextInput textField = form.getInputByName("q1");

  14. // 最近周星驰比较火呀,我这里设置一下在搜索框内填入”周星驰“

  15. textField.setValueAttribute("周星驰");

  16. // 输入好了,我们点一下这个按钮

  17. final HtmlPage nextPage = button.click();

  18. // 我把结果转成String

  19. String result = nextPage.asXml();

  20. System.out.println(result);


【声明】内容源于网络
0
0
曼昂网络爬虫
我们是程序员开发者联盟,利用业余时间提供网络爬虫软件定制、微站、H5、网站等各类软件开发服务,有意者请留言!
内容 96
粉丝 0
曼昂网络爬虫 我们是程序员开发者联盟,利用业余时间提供网络爬虫软件定制、微站、H5、网站等各类软件开发服务,有意者请留言!
总阅读44
粉丝0
内容96