如何刮取无限滚动生成的数据?

时间:2016-07-21 03:50:11

标签: python scrapy

如何使用scrapy从this page中删除产品列表?

我尝试过浏览器发送的ajax请求网址:

https://www.amazon.cn/gp/profile/A34PAP6LGJIN6N/more?next_batch_params%5Breview_offset%5D=10&_=1469081762384

但它会返回404

1 个答案:

答案 0 :(得分:2)

您需要复制在请求中看到的标头。

如果您检查响应标头,则可以看到: amazon.ca next page headers

您需要更新scrapy.Request.headers属性。这些价值很少。在大多数情况下,你可以跳过Cookie,因为scrapy自己管理这个,通常是像这样的ajax请求它没有意义。

对于这种情况,我通过仅复制X-Requested-With标题来设法获得成功的响应。此标头用于指示正​​在发生ajax请求。

您可以实际测试并设计这个实时:

scrapy shell <url>
# gives you 403
request.headers.update({'X-Requested-With': 'XMLHttpRequest'})
request.headers.update({'User-Agent': <some user agent>})
fetch(request)
# now the request is redownloaded and it's 200!