我尝试使用 Scrapy 抓取以下 URL: http://www.walgreens.com/search/results.jsp?Ntt=bounty+paper+towel
但返回的 URL 不完整。因为当我这样做的时候
scrapy shell the_url_above
然后
view(response)
网页未完全加载。所以我的问题是:
- 这个问题的原因是什么? (为什么我没有得到 404 但响应不完整)
- 有哪些可能的处理方法?
最佳答案
该页面的数据似乎是用 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/