htmlunit抓取动态网页(jsoup的简单使用方法-htmlunit的使用教程)

优采云 发布时间: 2021-11-16 02:15

  htmlunit抓取动态网页(jsoup的简单使用方法-htmlunit的使用教程)

  jsoup 只能解析静态 html 页面。如果页面是js动态生成的,jsoup将无法启动。使用htmlunit获取js运行后的页面,还可以模拟浏览器点击页面上的元素,非常强大,本文介绍htmlunit的简单使用。步骤如下:

  1、引入依赖

  

net.sourceforge.htmlunit

htmlunit

2.36.0

org.jsoup

jsoup

1.12.1

  2、我们爬取我们绘制的页面,首先绘制一个简单的页面,页面中content的id的div的原创内容是hello,页面加载后内容变成

  HtmlUnit 太强大了

  ,访问此页面查看结果

  

Title

HtmlUnit简单使用

hello

document.getElementById("content").innerHTML = "HtmlUnit好强大";

  

  3、写测试类,先用jsoup直接爬取,看内容里面的内容是什么,我们打印出来,可以看到是hello

  @Test

public void testJsoup() throws IOException {

Document document = Jsoup.connect("http://localhost:8080/index.html").get();

System.out.println(document.getElementById("content").html());

}

  4、用htmlunit看看效果

  @Test

public void test() {

final WebClient webClient = new WebClient(BrowserVersion.CHROME);

webClient.getOptions().setThrowExceptionOnScriptError(false);

webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

webClient.getOptions().setActiveXNative(false);

webClient.getOptions().setCssEnabled(false);

webClient.getOptions().setJavaScriptEnabled(true);

webClient.setAjaxController(new NicelyResynchronizingAjaxController());

HtmlPage page = null;

try {

page = webClient.getPage("http://localhost:8080/index.html");

} catch (Exception e) {

e.printStackTrace();

}finally {

webClient.close();

}

webClient.waitForBackgroundJavaScript(30000);

String pageXml = page.asXml();

Document document = Jsoup.parse(pageXml);//获取html文档

System.out.println(document.getElementById("content").html());

}

  

  可以看到js运行后的内容,与浏览器看到的结果一致

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线