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 过程中的简单理解,特此记录下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值