(爬虫)请问 如何抓取JS生成的网页?——返回结果是对象诶。。。。

发布于 2021-12-01 09:54:42 字数 1922 浏览 838 评论 8

js 获取到数据 然后write或者innerHTML的方式 生成的页面,源码中是看不到这些内容的

一般来说,我们会直接 找到js请求的地址,然后 获取该网站的 接口数据

比如:

国有资产、信息牌项目信息 -  http://xinjinqiao.tprtc.com/admin/main/flrpro.do


但是 我发现了一个问题,返回的结果 不是JSON、xml 或者 其他 可以看到的字符串的形式,

返回的是对象诶,这时候 js 可以 使用 类似 model.name,model.phone 等 形式 获取 属性,然后 写到

页面中,但是 :

首先你页面 源码里看不到,其次,返回的接口数据 也无法得到 想要的。

比如 请求的 servelt 是类似这样:

ProxyModel proxyModel = new ProxyModel();
proxyModel.setName("这是测试的地址");

response.getWriter().print(proxyModel);


然后 js里类似这样:


success: function(msg){
alert(msg.length);
$.each(msg, function(i,item){      
    alert(item.name); 

    div.innerHTML=item.name;
   })
}


反正js就是直接获取属性 ,能把 name在页面中显示出来


这时候你看接口返回的 只是一个对象,具体说是一个内存地址,没有 页面上显示 的 比如说 name



这中情况怎么搞呢?

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

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

发布评论

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

评论(8

最偏执的依靠 2021-12-01 21:53:01

post,get 你能够看到返回的结果,你在浏览器的网络面板能看到,那么程序 同样也可以获取到,我说的是 js可以获取,但是 监控 看不到。

女中豪杰 2021-12-01 21:52:52

没用过吗?经常用的map什么的 都是可一直直接获取属性的

檐上三寸雪 2021-12-01 21:48:15

你最后那个图片返回一个对象地址,这东西对js来说就是个字符串,你确定可以用js点出属性内容来?

为你鎻心 2021-12-01 21:43:33

以前试过,可是一直没有成功过。。。

输什么也不输骨气 2021-12-01 21:08:56

好吧,没用过,回头试试

夜无邪 2021-12-01 21:00:57

也可以看看我写的爬虫框架gecco,支持页面中定义的js变量的解析

瑾兮 2021-12-01 19:05:49

你说的这种情况可能是ajax请求返回的是一段javascript代码,你需要解析这段javascript代码,可以考虑用rhino解析。当然你可以用htmlunit这种测试框架,可以自动执行js和css。

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