java中使用HtmlUnit爬虫

本文详细介绍如何在pom文件中添加HtmlUnit依赖,并通过示例代码展示如何利用WebClient获取网页内容,解析HTML,以及如何处理AJAX加载的动态内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.pom文件中添加依赖

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.27</version>
</dependency>

2.写一个获取页面的util方法

public HtmlPage getHtmlPageResponse(WebClient webClient,String url) throws Exception {
   
    webClient.getOptions().setThrowExceptionOnScriptError(false);//当JS执行出错的时候是否抛出异常
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//当HTTP的状态非200时是否抛出异常
    webClient.getOptions().setActiveXNative(false);
    webClient.getOptions().setCssEnabled(true);//是否启用CSS
    webClient.getOptions().setJavaScriptEnabled(true); //很重要,启用JS
    webClient.getOptions().setRedirectEnabled(true);
    webClient.setAjaxController(new NicelyResynchronizingAjaxController());//很重要,设置支持AJAX

    webClient.getCookieManager().setCookiesEnabled(true);

    webClient.getOptions().setTimeout(timeout);//设置“浏览器”的请求超时时间
    webClient.setJavaScriptTimeout(timeout);//设置JS执行的超时时间

    HtmlPage page;
    try {
        page = webClient.getPage(url);
    } catch (Exception e) {
        webClient.close();
        throw e;
    }
    webClient.waitForBackgroundJavaScript(waitForBackgroundJavaScript);//该方法阻塞线程

    return page;
}

3.调用util方法

WebClient webClient = new WebClient();
HtmlPage htmlPage = httpUtils.getHtmlPageResponse(webClient,infoSource.getSourceUrl());
Document document = Jsoup.parse(htmlPage.asXml());//获取html文档
//处理document获取需要的内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值