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

优采云 发布时间: 2022-04-04 09:13

  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人工客服


线