2016-12-05 67 views
0

請幫我從這個鏈接刮產品名稱: http://www.gap.com/browse/category.do?cid=5168&scrollTo=product353401012&scrollTo=product353401012#pageId=0&department=75如何使用scrapy外殼刮從網站上的產品名稱

的產品名稱都包含在類=「產品牌 - 名字」,這是一個div 。當我運行 :response.css('div.product-card-name :: text')。extract() 時,它返回一個空列表。

請提供css和xpath命令。

+0

內容與AJAX請求一起進來。所以你會使用這些網址。 (*它是http://www.gap.com/resources/productSearch/v1/search?cid=5168和JSON格式*) –

回答

0

正如Gaby所說,內容是動態加載的。你可以看到這一點:

  • 打開網站在Chrome報廢(火狐也有 的方式做這件事)
  • 按F12打開DevTools
  • 選擇「網絡」標籤
  • 選擇 'XHR' 作爲過濾
  • 進行搜索(或重新加載網頁)

XHR filter

你會看到項目的列表,你想要的是:

搜索CID = 5168 & isFacetsEnabled =真& globalShippingCountryCode = & globalShippingCurrencyCode = &區域= EN_US & PAGEID = 0

如果你點擊它,你可以看到帶有標題的HTTP請求和你想要的所有數據的響應。

要在scrapy上做到這一點有點複雜,您必須取消此鏈接,但使用「POST」方法而不是默認(「GET」)。從scrapy蜘蛛做到這一點:

yield scrapy.Request(url, self.parse_data, method="POST", headers=headers, body=body) 

凡URL應該是你在XHR過濾器發現一個,使用的方法是「POST」,您應該複製我們先前發現的頭部和身體去所有參數都針對您正在搜索的內容。 從那裏你會得到一個JSON響應,你可以保存到一個文件或做任何你想要的。

如果你需要更多的細節讓我知道。

+0

你能幫我完整的代碼獲取產品名稱。我是scrapy事物的新手。爲什麼產品名稱不能被刮掉,即使它是HTML格式。 [點擊此處](http://i.imgur.com/FqEwhJg.png)。 – Light