最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
来源:互联网 发布:杭州php招聘 编辑:程序博客网 时间:2024/04/30 01:06
public static void main(String[] args) throws Exception {
String url="www.xxx.com";
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);//设置webClient的相关参数
webClient.setJavaScriptEnabled(true);
webClient.setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.setTimeout(50000);
webClient.setThrowExceptionOnScriptError(false);
//模拟浏览器打开一个目标网址
HtmlPage rootPage= webClient.getPage(url);
System.out.println("为了获取js执行的数据 线程开始沉睡等待");
Thread.sleep(30000);//注意 这步非常重要 因为页面的初始化js加载也是需要时间的 具体时间可以自己调
System.out.println("线程结束沉睡");
String html = rootPage.asXml();
System.out.println(html);
//后面是一个扩展 ,你前面的沉睡时间可以设短点 然后判断 抓过来的数据有没有你需要的 如果有 那就解析呗 我用的是Jsoup这个解析的 所需要的jar
//在我的资源里面有 地址http://download.csdn.net/detail/caiselangren/5743399 自己下了引人就行
Document doc = Jsoup.parse(html);
Element content = doc.getElementById("XXX");//这个是你要获取内容的ID 当然 你也可以用class或者元素名 或者name什么的去获取
Elements Numbers = null;
Elements Numbers_price = null;
Elements Numbers_detail = null;
if(content!=null){
Numbers=content.getElementsByAttributeValue("class", "XXX");
}else{
//数据没获取到
for(int i=0;i<20;i++){
System.out.println("数据没获取到延长沉睡5秒");
Thread.sleep(5000);
rootPage = webClient.getPage(url);
doc = Jsoup.parse(rootPage.asXml());
content = doc.getElementById("XXX");
if(content!=null){
Numbers=content.getElementsByAttributeValue("class", "XXX");
break;
}
if(i==19){
System.out.println("数据超过查询时间,停止查询");
}
}
}
if(Numbers!=null){
for(int i=0;i<Numbers.size();i++){
Element Number = Numbers.get(i);
System.out.println(Number.html());
}
}
}
- 最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
- 最近整理了个js,解决了excel导入读取数据遇到的种种问题
- 最近做项目遇到的棘手问题
- 最近做了个网站 二级域名的
- 最近有人问NSInvocation怎么用,于是写了个NSInvocation的小例子
- 最近有人问NSInvocation怎么用,于是写了个NSInvocation的小例子
- 最近遇到的问题
- 最近遇到的问题
- 最近遇到的问题
- 最近遇到的问题
- 记录最近遇到的2个问题
- 最近在做微信上传素材,使用tp5做框架,遇到了41005的问题,这里是解决的方法
- 最近在做ASP.net网站用到的技术和遇到的问题做个记录
- HtmlUnit的简单例子
- 最近解决的3个Java问题
- 就最近一段时间,就遇到了两次session id 一直变化的,所以做个总结。
- 最近在用表格呈现数据时遇到的问题
- 最近一段时间遇到的问题
- bss,data,rodata,text
- 使用jquery获取url以及jquery获取url参数的方法
- 波动序列解题报告
- 线程池原理分析
- Hdu 1907 John
- 最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
- Linux平台下线程池的原理及实现
- 破除BC上的制度限制
- POI导出Excel 含一维码图片
- MyBatisMap传入数据错误解决
- kmp算法
- libnet编译,windows/Linux
- Poj 1635 Subway tree systems (树的最小表示)
- Android的init过程详解