html5 数据懒加载图片,Jsoup+HtmlUnit获取懒加载数据

需要的包:

org.projectlombok

lombok

provided

1.16.20

org.jsoup

jsoup

1.8.3

net.sourceforge.htmlunit

htmlunit

2.25

返回的类:

import lombok.Data;

/*

* @author zzf

* @date 2019年1月15日 下午5:07:17

*/

@Data

public class TyphoonReportVo {

/**

* 发布时间

*/

String releaseTime;

/**

* 经度

*/

String longitude;

/**

* 纬度

*/

String latitude;

/**

* 中心气压

*/

String centralPressure;

/**

* 最大风速

*/

String maxWind;

/**

* 台风等级

*/

String typhoonLevel;

/**

* 台风名

*/

String typhoonName;

}

这里我要爬取的是台风信息:

http://typhoon.weather.com.cn/

e2c17643432872682c7c9e2d3ce86940.png

95fdfb4b51fae3aca79198973725ca33.png

代码如下:

public ListgetTyphoonReport() {

Listlist=new ArrayList<>();

String typhoonWeatherUrl="http://typhoon.weather.com.cn/";

try {

WebClient wc = new WebClient(BrowserVersion.CHROME);

// 启用JS解释器,默认为true

wc.getOptions().setJavaScriptEnabled(true);

// 禁用css支持

wc.getOptions().setCssEnabled(false);

// js运行错误时,是否抛出异常

wc.getOptions().setThrowExceptionOnScriptError(false);

// 状态码错误时,是否抛出异常

wc.getOptions().setThrowExceptionOnFailingStatusCode(false);

// 设置连接超时时间 ,这里是5S。如果为0,则无限期等待

wc.getOptions().setTimeout(5000);

// 是否允许使用ActiveX

wc.getOptions().setActiveXNative(false);

// 等待js时间

wc.waitForBackgroundJavaScript(1 * 1000);

// 设置Ajax异步处理控制器即启用Ajax支持

wc.setAjaxController(new NicelyResynchronizingAjaxController());

// 不跟踪抓取

wc.getOptions().setDoNotTrackEnabled(false);

HtmlPage page = wc.getPage(typhoonWeatherUrl);

// 以xml的形式获取响应文本

String pageXml = page.asXml();

Document document = Jsoup.parse(pageXml);

//获取对应a标签的url

Element a = document.select("div.borBox > h2.titleA > span > a").get(0);

String typhoonName = a.text();

page = wc.getPage(a.attr("href"));

pageXml = page.asXml();

Document listDocument = Jsoup.parse(pageXml);

//获取台风历史信息

Elements trs = listDocument.select("table > tbody > tr:gt(5)");

for (Element tr : trs) {

//保存数据

TyphoonReportVo typhoonReportVo=new TyphoonReportVo();

typhoonReportVo.setReleaseTime(tr.select("td:eq(0)").get(0).text());

typhoonReportVo.setLongitude(tr.select("td:eq(1)").get(0).text());

typhoonReportVo.setLatitude(tr.select("td:eq(2)").get(0).text());

typhoonReportVo.setCentralPressure(tr.select("td:eq(3)").get(0).text());

typhoonReportVo.setMaxWind(tr.select("td:eq(4)").get(0).text());

typhoonReportVo.setTyphoonLevel(tr.select("td:eq(5)").get(0).text());

typhoonReportVo.setTyphoonName(typhoonName);

System.out.println(tr);

list.add(typhoonReportVo);

}

} catch (Exception e) {

return null;

}

return list;

}

运行后:

7daf271811fc962d8bad51cff0c9a0c4.png

ok~这样就能获取懒加载后的数据了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值