其他分享
首页 > 其他分享> > htmlunit实现爬取网页

htmlunit实现爬取网页

作者:互联网

最近公司要求爬虫实现爬取指定网页的数据。我使用的htmlunit+jsoup 完成爬取网页数据,
个人感觉htmlunit 比较简单,容易理解,易上手操作。
步骤如下:

<dependency>
  <groupId>net.sourceforge.htmlunit</groupId>
   <artifactId>htmlunit</artifactId>
</dependency>
<dependency>
   <groupId>org.jsoup</groupId>
   <artifactId>jsoup</artifactId>
   <version>RELEASE</version>
</dependency>

然后创建爬取数据对象,并设置对象参数,如下代码,代码注释解释相应的参数作用,

WebClient webClient = new WebClient(BrowserVersion.CHROME); //设置模拟浏览器内核,就如打开相应的浏览器一样
		webClient.getOptions().setThrowExceptionOnScriptError(false); //当JS执行出错的时候是否抛出异常
		webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); //当请求状态不是200时是否抛出异常信息
		webClient.getOptions().setActiveXNative(false);
		webClient.getOptions().setRedirectEnabled(true);//是否跳转页面
		webClient.getCookieManager().setCookiesEnabled(true);//开启cookie管理  
		webClient.getOptions().setUseInsecureSSL(true);//忽略ssl认证	
		webClient.getOptions().setCssEnabled(false);//设置是否启用css
		webClient.getOptions().setJavaScriptEnabled(true);//设置是否启用JavaScript
		webClient.setAjaxController(new NicelyResynchronizingAjaxController());//设置支持Ajax
		webClient.getOptions().setTimeout(timeOut); //设置“浏览器”的请求超时时间
		webClient.setJavaScriptTimeout(waitForJavaScript); //设置JS执行的超时时间
		HttpWebConnection httpwebconnection = new HttpWebConnection(webClient);
		webClient.setWebConnection(httpwebconnection);

接着放入需要爬取网页的链接HtmlPage page = webClient.getPage("你的链接")
最后就是操作返回的HtmlPage 对象,里面就有相应获取标签的方法如下部分截图
在这里插入图片描述
包括模拟页面点击:如下截图
在这里插入图片描述
也可以执行页面js函数方法
在这里插入图片描述
jsoup 可以将转换页面文档对象等操作
在这里插入图片描述
此文仅是个人在使用htmlunit 过程中的简单理解,特此记录下。

标签:网页,htmlunit,爬取,jsoup,false,getOptions,webClient
来源: https://blog.csdn.net/weixin_44151627/article/details/104755508