htmlunit抓取动态网页(HtmlUnit+Jsoup背景在开发爬虫进行动态规则)

优采云 发布时间: 2022-02-26 00:17

  htmlunit抓取动态网页(HtmlUnit+Jsoup背景在开发爬虫进行动态规则)

  HtmlUnit + Jsoup

  背景

  在开发爬虫用动态规则爬取数据的时候,遇到HtmlUnit登录后无法访问cookie的情况,网上的一系列文章都失效了;

  HtmlUnit

  可以理解为一个沙盒浏览器,会得到整个网页的最终显示代码(包括动态加载数据的js),人眼看到的就是你得到的

  汤

  只访问网页内容(不包括js执行后的动态内容),优点是可以通过jquery选择器提取元素,如#id、.class等。htmlUnit只能从文档原生js中提取

  问题描述

  html单元代码

  /** HtmlUnit请求web页面 */

WebClient wc = new WebClient(BrowserVersion.CHROME);

wc.getOptions().setUseInsecureSSL(true);

wc.getOptions().setJavaScriptEnabled(true); // 启用JS解释器,默认为true

wc.getOptions().setCssEnabled(false); // 禁用css支持

wc.getOptions().setThrowExceptionOnScriptError(false); // js运行错误时,是否抛出异常

wc.getOptions().setTimeout(10 * 1000); // 设置连接超时时间 ,这里是10S。如果为0,则无限期等待

wc.waitForBackgroundJavaScript(10 * 1000); // 等待js后台执行30秒

wc.getOptions().setDoNotTrackEnabled(false);

//其他文章一贯的cookie设置方式-无效

//wc.getCookieManager().addCookie(new Cookie("domain域名","JSESSIONID","11"));

//改为以下方式

wc.addCookie("Cookie value长串不需要切割",new URL("目标网址"),"domain域名");

HtmlPage page = wc.getPage("目标网址");

  另外遇到以下棘手问题(未解决)

<p>//失败:通过改变支持ajax支持方式

wc.setAjaxControllr(new NicelyResynchronizingAjaxController());

//失败:循环判断内容,增加js-ajax执行时间

for (int i = 0; i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线