htmlunit抓取动态网页(HtmlUnit+Jsoup另外遇到以下棘手问题(未解决)背景)
优采云 发布时间: 2022-04-11 15:17htmlunit抓取动态网页(HtmlUnit+Jsoup另外遇到以下棘手问题(未解决)背景)
HtmlUnit + Jsoup
另外遇到以下棘手问题(未解决)
背景
在开发爬虫用动态规则爬取数据的时候,遇到HtmlUnit登录后无法访问cookie的情况,网上的一系列文章都失效了;
HtmlUnit
可以理解为一个沙盒浏览器,会得到整个网页的最终显示代码(包括动态加载数据的js),人眼看到的就是你得到的
汤
只访问网页内容(不包括js执行后的动态内容),优点是可以通过jquery选择器提取元素,如#id、.class等htmlUnit只能提取document的原生js
问题描述
html单元代码
1/** HtmlUnit请求web页面 */
2 WebClient wc = new WebClient(BrowserVersion.CHROME);
3 wc.getOptions().setUseInsecureSSL(true);
4 wc.getOptions().setJavaScriptEnabled(true); // 启用JS解释器,默认为true
5 wc.getOptions().setCssEnabled(false); // 禁用css支持
6 wc.getOptions().setThrowExceptionOnScriptError(false); // js运行错误时,是否抛出异常
7 wc.getOptions().setTimeout(10 * 1000); // 设置连接超时时间 ,这里是10S。如果为0,则无限期等待
8 wc.waitForBackgroundJavaScript(10 * 1000); // 等待js后台执行30秒
9wc.getOptions().setDoNotTrackEnabled(false);
10//其他文章一贯的cookie设置方式-无效
11//wc.getCookieManager().addCookie(new Cookie("domain域名","JSESSIONID","11"));
12//改为以下方式
13wc.addCookie("Cookie value长串不需要切割",new URL("目标网址"),"domain域名");
14HtmlPage page = wc.getPage("目标网址");
15
16
另外遇到以下棘手问题(未解决)
<p>1//失败:通过改变支持ajax支持方式
2 wc.setAjaxControllr(new NicelyResynchronizingAjaxController());
3
4 //失败:循环判断内容,增加js-ajax执行时间
5 for (int i = 0; i