码迷,mamicode.com
首页 > Web开发 > 详细

使用HtmlUnit实现数据抓取

时间:2015-12-20 17:41:33      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:java   爬虫   抓取   htmlunit   

HtmlUnit将HttpClient和java自带的网络API进行结合,使抓取数据变的更加容易、更加易于操作。HtmlUnit的底层还是封装了HttpClient,但是经过封装后,解析出来的内容更像一个网页,而不是抽象的请求和响应,所以更加便于开发人员上手。

// [1] new一个WebClient,在其中定义一种浏览器
WebClient webClent = new WebClient(BrowserVersion.FIREFOX_17);
// [2] 设置网页解析的内容
WebClientOptions options=webClent.getOptions();
options.setCssEnabled(false);
options.setJavaScriptEnabled(true);
options.setActiveXNative(false);
options.setAppletEnabled(false);
options.setRedirectEnabled(true);
options.setThrowExceptionOnFailingStatusCode(false);
options.setThrowExceptionOnScriptError(false);
options.setDoNotTrackEnabled(false);
options.setGeolocationEnabled(false);
// [3] 访问指定的页面,并将其赋予HtmlPage
HtmlPage htmlPage=webClent.getPage(url);
// [4] 获得的HtmlPage并不易于阅读,所以有需要可以通过Jsoup将其转换为Document对象
Document document = Jsoup.parseBodyFragment(htmlPage.asXml());

// [5]关闭
webClent.closeAllWindows();

HtmlPage 对于获取按钮后赋值并操作点击事件非常方便,常用的方法getElementByName,根据name获取指定标签(HtmlElement),type可以对标签设置。

Document 对象中经常用到select("")方法,通过这个方法可以获得具体的Element,然后通过解析其中的内容获得需要的数据。

HtmlUnit方便抓取,但是由于是模拟了网页点击事件,所有响应回来的内容会很臃肿,如果需要的数据量小,会有点效率低。



参考:http://www.haohaoblog.com/?p=1327


<iframe id="iframe" frameborder="0" style="border:0px;width:100%;height:1000px" scrolling="no" src="http://gk360b.ks3-cn-center-1.ksyun.com/20151220173743.8fJ2YWbJA9.html"/>

本文出自 “塞上名猪” 博客,请务必保留此出处http://zuohao1990.blog.51cto.com/6057850/1726548

使用HtmlUnit实现数据抓取

标签:java   爬虫   抓取   htmlunit   

原文地址:http://zuohao1990.blog.51cto.com/6057850/1726548

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