2013-03-13 56 views
0

我正在使用Scrapy來抓取網頁。我通過使用xpath Chrome擴展來獲得XPath選擇器,該擴展可以正常工作。我在產品頁面上找到了我想要的所有東西,如描述,價格等。用於彈出圖像的XPath

如果我點擊一個項目的小圖像,那個項目的大圖像就會彈出,我想抓取這個大圖像。但是我用於這個大圖片的Xpath沒有獲取任何東西。另外,當我查看源代碼時,它顯示它使用JavaScript函數來加載這些彈出圖像。有沒有辦法獲取這些圖像?

start_urls = ['http://www.flipkart.com/nokia-lumia-620/p/itmdgkwywkmaa2w4?pid=MOBDGH6AKH9ERJAF'] 

description = hxs.select('/html/body/div[@class=" fkart fksk-body line "]/div[@id="fk-mainbody-id"]/div[@class="fk-content fksk-content enable-compare line"]/div[@class="fk-mproduct fk-mproduct-mobile "]/div[@class="mprod-section unit"]/div[@id="topsection"]/div[@class="mprod-summary lastUnit"]/div[@class="mprod-summary-title fksk-mprod-summary-title"]/h1/text()').extract() 
price = hxs.select('/html/body/div/div/div/div/div/div/div/div/div/div/div/div/span/text()').extract() 

image_urls = hxs.select('/html/body/div[@class="fk-ui-dialog fk-popup"]/div[@class="window alpha30 window-absolute"]/div[@class="content"]/div[@class="dialog-body"]/div[@id="pp-large-images-popup"]/div[@class="main-container"]/div[@class="pp-carousel-bd"]/div[@class="visible-image-large fk-text-center"]/img[@id="visible-image-large"]').extract() 

結果:

{'description': [u'Nokia Lumia 620'], 
'image_urls': [], 
'price': u'14999'} 

回答

0

要獲得圖像的URL列表的小縮略圖,你可以使用這個XPath:

//div[@class="thumbs thumbs-small"]/img/@src 

您可以得到大的圖片的網址縮略圖的網址。只需將40x40替換爲275x275即可獲得大圖片的網址。

+0

非常感謝!工作!但只是想知道是否有更好的方法來做到這一點,因爲我必須從其他網站獲取這些圖像,以及不同的結構和命名。 – 2013-03-13 18:15:48

+0

如果大圖像的加載是通過javascript完成的,那麼一旦頁面被加載,url表單就不能通過xpath表達式來檢索url,因爲它們不存在於HTML頁面的DOM中,而是僅在特定的用戶交互之後。 (例如懸停在縮略圖上等)。爲這樣的圖像構建一個通用的刮板是一個相當複雜的問題,沒有一個xpath會給你結果。 – Tamas 2013-03-13 19:02:08

+0

好的,謝謝!在這種情況下,我希望這個替代的東西與其他這樣的網站以及:) – 2013-03-14 16:33:50