java爬虫工具htmlunit爬取静动态示例(附带亲测可用所有jar包)

本文提供的所有jar非maven引入地址。需自行查找pom引入方式。

 

爬取静态页面

爬取静态页面基本包:htmlunit基本jar包

可能有的还需要这两个包:

jetty-websocket.jar

jsoup.jar

 

导入以上所有jar包之后来hello word一下。

public static void main(String[] args) throws IOException {
    // 实例化Web客户端
    WebClient webClient = new WebClient();
    // 爬取https网站需要设置为true
    webClient.getOptions().setUseInsecureSSL(true);
    // 解析获取页面
    HtmlPage page = webClient.getPage("https://www.baidu.com");
    // 获取Html
    System.out.println("网页html:" + page.asXml());
    System.out.println("====================");
    // 获取文本
    System.out.println("网页文本:" + page.asText());
}

 

到这为止,上述的功能可以扒取静态页面。完全没问题。

 

爬取动态页面

爬取动态页面基本包:htmlunit爬取动态页面jar包

 

爬取动态界面示例demo

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

import java.util.logging.Level;

public class GetSongDemo {

    @Test
    public void show() throws Exception {
        readHtml("https://y.qq.com/n/yqq/song/000VWfXv0lIJyw.html");
    }

    public static void readHtml(String url) throws Exception {
        // 不显示异常日志
        LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log",
                "org.apache.commons.logging.impl.NoOpLog");
        java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit")
                .setLevel(Level.OFF);
        java.util.logging.Logger.getLogger("org.apache.commons.httpclient")
                .setLevel(Level.OFF);
        WebClient wc = new WebClient(BrowserVersion.BEST_SUPPORTED);
        wc.setJavaScriptTimeout(10000);
        //接受任何主机连接 无论是否有有效证书
        wc.getOptions().setUseInsecureSSL(true);
        //设置支持javascript脚本
        wc.getOptions().setJavaScriptEnabled(true);
        //js运行错误时不抛出异常
        wc.getOptions().setThrowExceptionOnScriptError(false);
        //设置连接超时时间
        wc.getOptions().setTimeout(100000);
        wc.getOptions().setDoNotTrackEnabled(false);
        //当HTTP的状态非200时是否抛出异常
        wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
        wc.getOptions().setActiveXNative(false);
        //是否启用CSS
        wc.getOptions().setCssEnabled(false);
        //很重要,设置支持AJAX
        wc.setAjaxController(new NicelyResynchronizingAjaxController());
        HtmlPage page = wc.getPage(url);
        Thread.sleep(10000);
        System.out.println(page.asXml());
        System.out.println(page.asText());
    }

}

 

 

你可能感兴趣的:(java,前端,other,hmtlunit,网页爬虫,java爬虫)