天天看点

基于HtmlUnit网络爬虫(一)

由于时间关系,我不知道下一集会什么时候写,但是欢迎大家交流。

很多网络爬虫新手肯定会遇到的2个问题:执行JavaScript和处理Ajax请求。

我这里以HtmlUnit框架为例。

好了,我先贴一些关键配置的代码,使得我们模拟的浏览器可以执行CSS和JavaScript。

BrowserVersion bv = BrowserVersion.FIREFOX_24;

WebClient client = new WebClient(bv);

WebClientOptions options = client.getOptions();

options.setCssEnabled(true);

options.setPopupBlockerEnabled(true);

//假如要执行JS,此处很重要

options.setJavaScriptEnabled(true);

options.setRedirectEnabled(true);

options.setThrowExceptionOnFailingStatusCode(true);

options.setThrowExceptionOnScriptError(false);

options.setAppletEnabled(true);

options.setTimeout(30000);

//这行代码是针对https的网站

options.setUseInsecureSSL(true);

options.setActiveXNative(true);

options.setGeolocationEnabled(true);

options.setPrintContentOnFailingStatusCode(true);

client.waitForBackgroundJavaScript(30000);

client.getCookieManager().setCookiesEnabled(true);

//执行JS,此处配置很重要

client.setAjaxController(new NicelyResynchronizingAjaxController());

好了,各位可以参照一些网上的DEMO,假如不能顺利通过测试,建议先修改一下自己的配置。

下一节我会写一些怎么抓取网页的DEMO,以及如何执行JavaScript。