2013-05-05 233 views
14

我已经见过this question about scraping ajax,但python没有在那里提及。我考虑使用scrapy,我相信他们有关于该主题的一些文档,但正如您可以看到该网站已关闭。所以我不知道该怎么做。我想要做以下事情:使用python刮ajax页面

我只有一个网址,example.com你通过点击提交去页面,网址不会改变,因为他们使用ajax来显示内容。我想刮掉每一页的内容,该怎么做?

可以说,我只想刮掉数字,除了scrapy之外,还有什么可以做的吗?如果没有,你会给我一个关于如何去做的片段,只是因为他们的网站已经关闭,所以我无法访问文档。

回答

32

首先,scrapy文档可在https://scrapy.readthedocs.org/en/latest/

说到在网页抓取时处理ajax。基本上,这个想法很简单:

  • 打开的浏览器开发者工具,网络选项卡
  • 到目标站点
  • 点击提交按钮,看看XHR request是要在服务器
  • 模拟这个XHR在蜘蛛的要求

另见:

希望有所帮助。

+1

我指的是这个网址'blog.scrapy.org/scraping-ajax-sites-with-scrapy '这已不再可用,谢谢你提醒我readthedocs.com – Lynob 2013-05-06 18:06:50

+1

明白了。如果您的蜘蛛执行有问题,请考虑发布另一个问题,您想要抓取哪个网址,点击哪个按钮等。快乐刮! – alecxe 2013-05-06 18:23:47

+1

@Lynob这里是你正在谈论的URL:https://web.archive.org/web/20130525095330/http://blog.scrapy.org/scraping-ajax-sites-with-scrapy – 2upmedia 2015-12-17 20:57:05

3

我发现答案非常有用,但我想让它更简单。

response = requests.post(request_url, data=payload, headers=request_headers) 

request.post带有三个参数url,data和headers。这三个属性的值可以在XHR请求中找到。

复制整个请求头和表单数据加载到上述变量,你是好去

+1

如果我能找不到XHR请求?它在Chrome或FoxFox webtools中不可见。但是,有一个AJAXSetup.js文件。有没有其他方法可以找到这些信息? – whieronymus 2017-06-05 21:21:35