Java_爬虫,如何抓取Js动态生成数据的页面?

发布于 2021-11-27 11:36:27 字数 1179 浏览 929 评论 14

很多网站是用js或Jquery 生成数据的,到后台获取到数据以后,用 document.write()或者("#id").html="" 的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。

HttpClient是不行的,看网上说HtmlUnit,说  可以获取后台js加载完后的完整页面,但是我按照文章上说的 写了 ,都不好使。一般的代码是这样写的:


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) {
		}

其实根本不好使。


求解答,其中典型的就是这个链接的页面,怎么能在java程序中获取其中的数据?

http://xinjinqiao.tprtc.com/admin/main/flrpro.do

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

私藏温柔 2021-12-01 15:11:12

在神箭手云爬虫里开发爬虫,只需要勾选上js渲染就可以实现自动爬取js动态生成的数据了,很简单,你可以去试试:http://www.shenjianshou.cn/

半世蒼涼 2021-12-01 15:11:02

点开firebug后再刷新下网页即可

夜血缘 2021-12-01 15:11:02

同求,网上很多没有说明具体方法,用于获取js加载后的网页

归属感 2021-12-01 15:10:50

看全部,不要只看HTML。控制台里也能看到AJAX的交互信息。

飘然心甜 2021-12-01 15:09:52

引用来自“tinshen”的评论

http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?date=1406281728304&name=flr&nowpage=1&pagesize=100

你的方向错了。你应该抓取实际的数据源。而不那个显示页面。

我给你的地址就实际数据源。恭喜你页面大小你可以自己控制。

夜司空 2021-12-01 15:06:57

firebug可以完全的看到数据交互,你仔细的看firebug的请求路径就可以知道了。 如果你去到了后台的数据交互。 不就直接解析json不就完了,何必又要去再次通过HtmlUnit获取内容。不更麻烦了。 大部分的复杂交互都是有规律的。 找到顾虑了只要解析后台的返回数据就可以了。

谢绝鈎搭 2021-12-01 15:03:38

引用来自“tinshen”的评论

http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?date=1406281728304&name=flr&nowpage=1&pagesize=100

你的方向错了。你应该抓取实际的数据源。而不那个显示页面。

我给你的地址就实际数据源。恭喜你页面大小你可以自己控制。

孤独患者 2021-12-01 15:01:42

引用来自“头号大宝贝”的评论

url:http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?date=[timestamp]

post type:post

param: nowpage,pagesize,name

千纸鹤带着心事 2021-12-01 14:29:49

写个浏览器插件  根据DOM树自己生成源代码

叹沉浮 2021-12-01 04:04:48

url:http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?date=[timestamp]

post type:post

param: nowpage,pagesize,name

睫毛上残留的泪 2021-11-30 23:48:46

帮顶下吧,我最近也遇到这个问题未解决。。。

瑾夏年华 2021-11-30 16:59:51

左岸枫 2021-11-30 13:19:19

回复
这个就另一个技术了。httpclient有支持sesssion和cookies保持的方法。本身就是模拟一个完整的浏览器请求。 即使有验证码+用户验证等不是问题,因为程序就是模拟浏览器操作。

心舞飞扬 2021-11-28 18:56:02

http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?date=1406281728304&name=flr&nowpage=1&pagesize=100

你的方向错了。你应该抓取实际的数据源。而不那个显示页面。

我给你的地址就实际数据源。恭喜你页面大小你可以自己控制。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文