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

优采云 发布时间: 2021-09-30 12:03

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

  HtmlUnit+Jsoup

  背景

  当开发一个通过动态规则捕获数据的爬虫程序时,htmlunit在登录后无法通过cookie访问数据,并且互联网上的一系列文章无效

  HtmlUnit

  它可以理解为一个沙盒浏览器,它将获得整个网页的最终显示代码(收录动态加载数据的JS),人们看到的就是他们得到的

  Jsoup

  只能获取网页内容(不包括JS执行后的动态内容)。优点是可以通过jQuery选择器提取元素,例如#id、,。类等。htmlunit只能从本机JS文档中提取

  问题描述

  htmlUnit代码

  /** 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人工客服


线