java爬取js动态加载的内容
在写爬虫的时候需要下载一个页面上的附件,比如http://www.jsqts.gov.cn/zjxx/... 这个网站上面的附件,但是直接用jsoup抓取页面的话html里什么都没有,百度了之后知道好多内容是js动态加载的,于是使用了httpunit,模拟浏览器执行完js,但是返回的页面还是不包含附件信息,代码如下:
String url = "http://www.jsqts.gov.cn/zjxx/GovInfoPub/Department/showinfo.aspx?InfoID=4a6f06c1-2a1b-40f9-bbfe-caafc0100428&CategoryNum=001010";
WebClient webClient = new WebClient(BrowserVersion.CHROME);
//设置webClient的相关参数
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setCssEnabled(false);
webClient.waitForBackgroundJavaScript(600*1000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
//模拟浏览器打开一个目标网址
HtmlPage rootPage = webClient.getPage(url);
System.out.println("为了获取js执行的数据 线程开始沉睡等待");
Thread.sleep(1000);//主要是这个线程的等待 因为js加载也是需要时间的
System.out.println("线程结束沉睡");
String xml = rootPage.asXml();
System.out.println(xml.contains("2016年三季度省级工业产品监督检查结果 .xls"));//false
请教大佬们
相关阅读:
关于 GIT 怎么设置多个不同的部署公钥?
angular里面的作用域继承是怎么实现的的?
在meta里设置了防止浏览器缓存的代码 在地址栏回车为什么还是有缓存呢?
【图】这个设计如何实现?
react子组件怎么改变父组件的state
我用docker build的时候出现下边问题 麻烦帮我看一下
chart.js (intermediate value).Line is not a function(…)
请问mongoodb是不是除了npm install之外还需要单独安装一下
vue-router url变化了,但页面并未跳转,然后刷新后才会到该页面
pyspider运行起来丢header参数
请问Vuejs2如何用变量的值作为标签的指令名呢?
visual studio 2015安装成功后打不开
我这几天一直想一个问题,我们这一代互联网人,老了以后,开发不动了怎么办!
Autodesk Forge Viewer里如何获得当前的选择集,或已知构件DbId高亮此对象?
maven依赖问题.
return false没有阻止浏览器默认打开链接行为
如何在 python 2.7 中使用 Function Annotation 吗?
一个mysql联表查询的问题
JS引入无文件头的JSON文件如何取值。
react发起ajax get请求的参数问题