首页 新闻 会员 周边 捐助

python网站动态数据爬取

-1
悬赏园豆:20 [已解决问题] 解决于 2018-05-17 15:11

本人分析百度贴吧试图进行爬取,发现各楼层回复并不出现在html文件中,经过百度后知道了有json这种东西。但经过本人f12分析却并没有找到相应的json文件,不知到是思路不正确还是寻找方式有勿,希望知情者能够指点一二,谢谢

xiaoblue的主页 xiaoblue | 初学一级 | 园豆:117
提问于:2018-05-10 21:33
< >
分享
最佳答案
0

这种一般是 js ajax 请求异步加载的数据,要能抓取到,,只能分析每个ajax请求的作用,在直接请求这个,

或者 你的抓取程序要有执行js 程序的 功能

收获园豆:20
电磁魔王喵喵 | 小虾三级 |园豆:1343 | 2018-05-11 10:13

他可以模拟鼠标点击的动作,然后去抓取页面DOM信息

DanBrown | 园豆:1321 (小虾三级) | 2018-05-11 10:32

@DanBrown: 有些DOM 源码里面是没有的,是执行了 js  程序后添加的,所有我的意思是,你的程序需要有执行js的能力。

你说的这个 “模拟鼠标点击的动作” 是指 抓取 a标签链接指向的页面么?

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2018-05-11 11:00

@电磁魔王喵喵: 并不是去访问a标签里面的链接,我的意识是比如有个按钮你点一下页面上被js新增加了10条数据,那么我只是抓取页面上的,说白点就是我先,点点点,页面上都有我想要的数据了都在DOM里,我直接抓DOM里信息就可以了

DanBrown | 园豆:1321 (小虾三级) | 2018-05-11 11:06

@电磁魔王喵喵: 我尝试过使用selenium+ phantomjs进行动态抓取,但是太慢了。请问ajax请求是否一定问产生json文件回复,如果不会那我该如何寻找数据呢(我对javascript和ajax不是特别熟悉)

xiaoblue | 园豆:117 (初学一级) | 2018-05-11 13:10

@xiaoblue: 如果要快的话, 需要分析网站的源码,找出哪些数据源码里有,哪些是异步加载的,还要知道加载的数据都是做什么用的,

“ajax请求是否一定问产生json文件回复”  这个 ajax 请求返回的实际上只是一堆字符串 ,有些是json 格式的,也有可能是html格式的代码,只能看具体的网站,

 

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2018-05-11 13:31

@电磁魔王喵喵:难以分析,近乎崩溃。没有显性的json文件,不知道该怎么办,js文件太多,本身又不熟悉。网上也没有找到对各楼层回复爬取的方法......

xiaoblue | 园豆:117 (初学一级) | 2018-05-16 16:31

@电磁魔王喵喵:要落泪了,太激动了。之前一直困在js请求分析上,由于分析不出来我用fiddler检索http报文主体是否含有楼层回复信息,中文没搜到,但转为unicode后发现搜到了,仔细一看url怎么是贴吧地址,然后......楼层回复在html源码中有的,只不过是以unicode编码形式存在着(笑哭)

xiaoblue | 园豆:117 (初学一级) | 2018-05-16 17:49

@xiaoblue: 少年,你悟了

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2018-05-17 10:12
其他回答(2)
1

有的,你好好看看行么

 

 

DanBrown | 园豆:1321 (小虾三级) | 2018-05-11 08:23

这里确实有,不过右键选择查看页面源代码就没有了

支持(0) 反对(0) xiaoblue | 园豆:117 (初学一级) | 2018-05-11 08:26

@xiaoblue: 你要人家的数据,去看人家源代码?,就算你看了人家源代码,页面上的数据也是有的,你好好看看行么?Ctrl+f 你搜一下

支持(0) 反对(1) DanBrown | 园豆:1321 (小虾三级) | 2018-05-11 08:28

@xiaoblue: 应该做了javascript跳转

支持(0) 反对(0) 是长宏不是长虹 | 园豆:200 (初学一级) | 2019-03-19 17:44
0

一般爬取动态页面的数据的话可以用selenium+chromedriver 或者phatomeJS,题主可以试一下 

自说自话唉 | 园豆:193 (初学一级) | 2018-05-25 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册