我嘗試抓取使用Scrapy以下網址: http://www.walgreens.com/search/results.jsp?Ntt=bounty+paper+towelScrapy反應不完全
,但返回的URL是不完整的。因爲當我做
scrapy shell the_url_above
然後
view(response)
的網頁只是不完全加載。所以我的問題是:
- 這個問題的原因是什麼? (爲什麼我沒有得到一個404,但一個不完整的答覆)
- 什麼是一些潛在的方式來處理它?
我嘗試抓取使用Scrapy以下網址: http://www.walgreens.com/search/results.jsp?Ntt=bounty+paper+towelScrapy反應不完全
,但返回的URL是不完整的。因爲當我做
scrapy shell the_url_above
然後
view(response)
的網頁只是不完全加載。所以我的問題是:
該頁面的數據似乎已經用JavaScript加載。如果您檢查頁面(如螢火網絡選項卡上),你會看到,一旦基地頁面加載的產品正在由JavaScript,它發送POST請求http://www.walgreens.com/svc/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