htmlunit 抓取网页(java页面分析工具是什么?是怎么做的? )

优采云 发布时间: 2021-11-05 14:02

  htmlunit 抓取网页(java页面分析工具是什么?是怎么做的?

)

  一、什么是 HtmlUnit?

  1、htmlunit 是一个开源的java页面分析工具。阅读完页面后,您可以有效地使用 htmlunit 来分析页面上的内容。该项目可以模拟浏览器操作,被称为java浏览器的开源实现。它是一个没有界面的浏览器,运行速度很快。

  2、 使用 Rhinojs 引擎。模拟js运行

  3、常规意义上,这个项目可以用来测试页面,实现网页的自动化测试,(包括JS)

  4、 但是一般来说,在小型爬虫项目中,这种框架非常常用,可以有效的分析dom标签,有效的运行页面上的js,得到一些需要的js执行。价值。

  二、应用:获取百度API返回的详细url,从详细url中抓取图片url

  maven 依赖:

  

net.sourceforge.htmlunit

htmlunit-core-js

2.23

net.sourceforge.htmlunit

htmlunit

2.23

xml-apis

xml-apis

1.4.01

  服务器代码:

  /**

* 从百度POI详情页获取图片url

* @param poiUid

* @return

*/

public static List grabImgUrl(String poiUid) {

if (StringUtils.isBlank(poiUid)) {

return null;

}

final String IMG_LIST_URL = "http://map.baidu.com/detail?qt=caterphoto&type=list&ugc_ver=1&uid=";

String detailUrl = IMG_LIST_URL + poiUid;

log.info("grabImgUrl. detailUrl=" + detailUrl);

final String DIV_ID = "photoContainer";

final String TAG_IMG = "img";

final String IMG_SRC = "src";

try (final WebClient webClient = new WebClient()) {

final HtmlPage page = webClient.getPage(detailUrl);

if (page != null && page.isHtmlPage()) {

Thread.sleep(40000); // 等待页面加载完成。

final HtmlDivision div = page.getHtmlElementById(DIV_ID);

DomNodeList eleList = div.getElementsByTagName(TAG_IMG);

List imgUrlList = new ArrayList();

for (HtmlElement hele : eleList) {

String imgUrl = hele.getAttribute(IMG_SRC);

if (StringUtils.isNotBlank(imgUrl)) {

log.info("imgUrl=" + imgUrl);

imgUrlList.add(imgUrl);

}

}

return imgUrlList;

}

} catch (Exception e) {

log.error("grabImgUrl error.", e);

}

return null;

}

  页面显示:

  

${im.picUrl }

设为封面

×

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线