2017-02-24 80 views
0

我想颳了一件衣服的價格離這個網站刮:http://www.asos.com/asics/asics-gel-kayano-evo-trainers-in-black-h707n-9090/prd/7592389?iid=7592389&clr=Black&cid=4209&pgesize=36&pge=0&totalstyles=2160&gridsize=3&gridrow=2&gridcolumn=1問題與渲染的網站

這裏是頁的link to a screenshot被刮掉。

使用Scrapy殼:

response.xpath('//span[@data-id="current-price"]/text()').extract()

甚至渲染後的網站不返回任何內容。任何想法如何從網站刮這塊價格信息?

謝謝!

回答

0

Scrapy不執行JavaScript呈現,因爲您需要瀏覽器自動化服務,如seleniumsplash

但是,在這種情況下,您仍然可以從相同的原始響應中獲取所需的信息,因爲它包含數據(但未在最終出現的html標記上呈現)。大多數網站從不同的請求中獲得額外的信息,這導致更難以抓取。

你可以得到的信息,你要這樣說:

import json 
... 

d = json.loads(response.xpath('//script[contains(., "Pages/FullProduct")]/text()').re_first("view\('(\{.*\})',")) 
print d['price'] // {u'currency': u'GBP', u'current': 70.0, u'previous': 0.0, u'rrp': 0.0} 
print d['price']['current'] // 70.0 
+0

非常感謝!這工作得很好。如果可以的話,我可以問一下'.re_first(「view \('(\ {。* \})',」))'是如何工作的?我知道這是使用正則表達式 – jiexun

+0

是的,它只是一個方便的scrapy方法使用正則表達式與選擇器的輸出 – eLRuLL