python 里面要抓去页面上 ajax 返回的数据用哪个库?

2015-09-17 11:43:21 +08:00
 karlxu
我有个生成结果的页面,这个页面里有 ajax ,现在用 urllib2 抓去的时候直接给我返回静态页面了,里面都是没有数据的,只有个壳。。。
2941 次点击
所在节点    Python
14 条回复
exoticknight
2015-09-17 11:49:25 +08:00
跟普通请求一样的库
你去看看代码中的 ajax 请求的地址、方法和参数是什么
ccbikai
2015-09-17 12:15:00 +08:00
User-Agent 注意一下, 再看看参数有没有什么特别的
hahasong
2015-09-17 12:25:08 +08:00
request
cloverstd
2015-09-17 12:40:08 +08:00
我想应该是 cookies 没带上
想简单就用 requets 的 session
或者用 urllib2 自己处理 cookies
WKPlus
2015-09-17 14:25:36 +08:00
ajax 是另外一次请求,你需要发看看 ajax 发了什么请求,然后直接发那个请求就好了。
当然对于 ajax 请求,服务器还可能验证其他的,比如 cookie 、 ua 之类的
mulog
2015-09-17 16:44:34 +08:00
你要是只抓那一两个页面 可以自己去看看那个 ajax 请求是什么 然后去抓那个请求就好了
如果是数量比较多或者要抓取的页面不确定 那么你可能需要 Selenium
CYKun
2015-09-17 17:27:25 +08:00
selenium ,这是一个大坑
Ouyangan
2015-09-17 19:14:02 +08:00
@cloverstd 一般是可以自动维护 cookie 吧
cloverstd
2015-09-17 19:29:02 +08:00
@Ouyangan urllib2 不能,得手动维护
ljbha007
2015-09-17 19:43:49 +08:00
注意 cookie, user-agent
还有个 x-requested-with 的 header
say2old
2015-09-18 13:50:14 +08:00
你这个问题和用哪个库无关。请先用 Firefox 或者 Chrome 截获 Ajax 请求 API 的地址,以及 header, body, cookie 所有相关信息。然后再用 urllib2 去模拟这个请求拿数据。除了 urllib2 ,可以考虑用 python 的 requests 包,把 http 访问的相关操作封装的很好,很好用
zog
2015-09-18 15:26:40 +08:00
这个功能不是爬虫。叫浏览器模拟。主流的方案用 selenium ,非主流的方案用 Ghost.py
sinux
2015-09-18 16:50:42 +08:00
@zog 非主流 Ghost.py 23333333
zog
2015-09-18 18:38:37 +08:00
@sinux 哈哈。我推荐用 selenium , selenium 模拟网页操作的驱动叫做 webDriver ,可以兼容挺多客户端, chrome,firefox,phantomJS 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX