Scrapy 响应不完整

Scrapy response incomplete

我尝试使用 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 加载,它向 [=] 发送 POST 请求12=] 内容:

{"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 包含产品数据的对象。

实际上,您甚至可以通过此 link 在浏览器中查看响应: 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