如何爬取网页中js动态生成的数据
2个回答
展开全部
String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do";
try {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
//设置webClient的相关参数
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
//webClient.getOptions().setTimeout(50000);
webClient.getOptions().setThrowExceptionOnScriptError(false);
//模拟浏览器打开一个目标网址
HtmlPage rootPage = webClient.getPage(url);
System.out.println("为了获取js执行的数据 线程开始沉睡等待");
Thread.sleep(3000);//主要是这个线程的等待 因为js加载也是需要时间的
System.out.println("线程结束沉睡");
String html = rootPage.asText();
System.out.println(html);
} catch (Exception e) {
}
展开全部
现在网页大多是动态网页,尤其是内容丰富,值得爬取的网站,几乎无一例外是动态的,比如狗东、淘宝和知乎,而且还有不少反爬手段,这些都大大提升了爬虫难度,尤其是淘宝,为了反爬不惜影响到正常用户使用。
面对这些动态网页,通常的手法都是监听、抓包、分析js文件,这些都不简单,而且还麻烦。
对于这些网站,有一款神器可以实现降维打击,那就是Google出品的爬虫工具 Puppeteer。它本质上是一个chrome浏览器,只不过可以通过代码进行各种操控。
比如模拟鼠标点击、键盘输入等等,有点像按键精灵,而网页很难分清楚这是人类用户还是爬虫,所以限制也就无处谈起。
这不,即使js文件弄得再复杂也好,压根不用看,模仿用户操作就行,直接获取信息。
面对这些动态网页,通常的手法都是监听、抓包、分析js文件,这些都不简单,而且还麻烦。
对于这些网站,有一款神器可以实现降维打击,那就是Google出品的爬虫工具 Puppeteer。它本质上是一个chrome浏览器,只不过可以通过代码进行各种操控。
比如模拟鼠标点击、键盘输入等等,有点像按键精灵,而网页很难分清楚这是人类用户还是爬虫,所以限制也就无处谈起。
这不,即使js文件弄得再复杂也好,压根不用看,模仿用户操作就行,直接获取信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询