(爬虫)请问 如何抓取JS生成的网页?——返回结果是对象诶。。。。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
post,get 你能够看到返回的结果,你在浏览器的网络面板能看到,那么程序 同样也可以获取到,我说的是 js可以获取,但是 监控 看不到。
没用过吗?经常用的map什么的 都是可一直直接获取属性的
你最后那个图片返回一个对象地址,这东西对js来说就是个字符串,你确定可以用js点出属性内容来?
以前试过,可是一直没有成功过。。。
好吧,没用过,回头试试
也可以看看我写的爬虫框架gecco,支持页面中定义的js变量的解析
你说的这种情况可能是ajax请求返回的是一段javascript代码,你需要解析这段javascript代码,可以考虑用rhino解析。当然你可以用htmlunit这种测试框架,可以自动执行js和css。