htmlunit 抓取网页(和java自带的网络API进行结合,怎么做?)

优采云 发布时间: 2022-01-05 04:01

  htmlunit 抓取网页(和java自带的网络API进行结合,怎么做?)

  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根据名称获取指定的标签(HtmlElement),可以为标签设置类型。

  select("") 方法经常用在 Document 对象中。通过这个方法可以得到一个特定的Element,然后通过解析内容就可以得到需要的数据。

  HtmlUnit方便抓取,但是因为它模拟了网页点击事件,所以所有的响应内容都会变得臃肿。如果需要的数据量很小,效率会有点低。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线