htmlunit 抓取网页(java页面分析工具是什么?是怎么做的? )
优采云 发布时间: 2022-01-22 10:14htmlunit 抓取网页(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;
}
页面显示:
设为封面
×