python - Scrapy 响应不完整

标签 python web-scraping scrapy web-crawler

我尝试使用 Scrapy 抓取以下 URL: http://www.walgreens.com/search/results.jsp?Ntt=bounty+paper+towel

但返回的 URL 不完整。因为当我这样做的时候

scrapy shell the_url_above

然后

view(response)

网页未完全加载。所以我的问题是:

  1. 这个问题的原因是什么? (为什么我没有得到 404 但响应不完整)
  2. 有哪些可能的处理方法?

最佳答案

该页面的数据似乎是用 javascript 加载的。如果您检查该页面(例如 firebug 网络选项卡),您会看到一旦加载了基本页面,就会通过 javascript 加载产品,它向 http://www.walgreens.com/svc 发送 POST 请求/products/search 内容:

{"p":"1",  # seems to be page number
"s":"15",  # page size
"sort":"relevance",
"view":"allView",
"geoTargetEnabled":false,
"q":"bounty paper towel",  # search query
"requestType":"search",
"deviceType":"desktop"}

您可以使用 scrapy 发送此请求:

yield Request('http://www.walgreens.com/svc/products/search',
              method='POST',
              body=<the json from above>)

您应该会收到一个包含产品数据的 json 对象。

实际上,您甚至可以通过此链接在浏览器中查看响应: http://www.walgreens.com/svc/products/search?p=1&s=15&sort=relevance&view=allView&geoTargetEnabled=false&q=bounty%20paper%20towel&requestType=search&deviceType=desktop

关于python - Scrapy 响应不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370674/

相关文章:

functional-programming - 使用 Scheme 抓取网页

python - 使用Scrapy和Crawlera抓取HTTPS页面

python - 检查用于请求 Python/Scrapy + ProxyMesh 的 IP 地址

python - Docker - 无法运行 Jupyter 笔记本 - KeyError : 'allow_remote_access'

python - 如何找到椭圆内的点?

python - 如何创建递归金字塔函数?

python - 无法在 python 中导入 utils.denoising_utils

css - Scrapy 在 Xpath 或 Css 中找不到文本

web-scraping - 抓取此页面时,我遇到 scrapy 超时错误

xpath - 尝试使用包含希腊字母的Xpath时出现“XPath错误:无效谓词”