2015-12-11 33 views
0

我使用Scrapy抓取該網站的產品圖片src鏈接:不能獲取圖像的src鏈接使用XPath

http://eshop.tesco.com.my/en-GB/Promotion/List?SortBy=Default

對於一些原因,XPath不搶的產品圖片src鏈接。我嘗試抓取從網站上的所有圖片src鏈接,通過這個XPath在Scrapy殼牌測試它:

response.xpath('//img').extract() 

返回的結果表明,有在img標籤的所有產品沒有src鏈接。

[u'<img alt="Grocery Home" class="tLogoMain" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/tLogoMain.gif" title="Grocery Home">', 
u'<img src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/searchFor.png" alt="Search" class="searchFor">', 
u'<img alt="Previous" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/pg-prev-disbl-btn.png">', 
u'<img alt="Next" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/pg-nxt-btn.png">', 
u'<img alt="Grid view" class="grdView" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/high-grd-view.png">', 
u'<img alt="List view" class="lstView" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/unhigh-lst-view.png">', 
u'<img alt="" id="productImg-7072093609">', 
u'<img alt="" id="productImg-7070005656">', 
u'<img alt="" id="productImg-7070005648">', 
u'<img alt="" id="productImg-7000034983">', 
u'<img alt="" id="productImg-7070483892">', 
u'<img alt="" id="productImg-7000035009">', 
u'<img alt="" id="productImg-7000801798">', 
u'<img alt="" id="productImg-7072123710">', 
u'<img alt="" id="productImg-7072123737">', 
u'<img alt="" id="productImg-7072123702">', 
u'<img alt="" id="productImg-7004102002">', 
u'<img alt="" id="productImg-7001314416">', 
u'<img alt="" id="productImg-7001829106">', 
u'<img alt="" id="productImg-7001495593">', 
u'<img alt="" id="productImg-7001812165">', 
u'<img alt="" id="productImg-7001813226">', 
u'<img alt="" id="productImg-7002760339">', 
u'<img alt="" id="productImg-7001812157">', 
u'<img alt="" id="productImg-7002800969">', 
u'<img alt="" id="productImg-7002764067">', 
u'<img alt="" id="productImg-7001866206">', 
u'<img alt="" id="productImg-7070980683">', 
u'<img alt="" id="productImg-7072086912">', 
u'<img alt="" id="productImg-7001884344">', 
u'<img alt="Previous" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/pg-prev-disbl-btn.png">', 
u'<img alt="Next" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/pg-nxt-btn.png">', 
u'<img src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/btn-bookslot-bskt-d.gif" class="delSlotBtn" alt="Book slot disabled">', 
u'<img src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/btn-checkout-bskt-d.gif" class="chkOutBtn" alt="Checkout disabled">', 
u'<img alt="" class="legendImg" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/star.png" title="">', 
u'<img alt="" class="legendImg" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/star.png" title="">', 
u'<img alt="Opens in a new window" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/open-window.png" title="Opens in a new window">', 
u'<img src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/btn-fulltrolley-bskt-d.gif" class="fullTrolleyBtn" alt="">', 
u'<img alt="Add to list" class="slAddToListDsbld" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/i368/dsbld_sl_addtolst_icn.png">', 
u'<img alt="Tesco Strapline" src="http://assets.ap-tescoassets.com/UIAssets/MY/grocery/default/en-GB/i368/footer/strapline_footer_bottom_my.png" title="Tesco Strapline">'] 

我再次使用Chrome Inspector進行檢查,每個產品都有src鏈接。爲什麼返回的結果中沒有src鏈接?

請幫忙。

謝謝。

回答

0

這是因爲JavaScript渲染,您正在訪問不包含該信息的網站的純文本,但在加載過程中它是由JavaScript腳本的填補。

您可以檢查過安裝在您的瀏覽器的一些Toggle Javascript extension,所以你可以檢查什麼是真正下載沒有的JavaScript。

+0

我看到...感謝您的信息。是否有另一種方法來刮除這些鏈接? –

+0

用戶螢火蟲(火狐)或鉻Chrome開發人員工具,以檢查其請求返回你所需要的信息,也可以使用'selenium'加載網頁就像一個瀏覽器。 – eLRuLL

0

這可能是因爲它得到與XPath的多個節點 - 「// IMG」。

嘗試用以下XPath來獲取特定節點:SRC的 .//img[contains(src,'{{specific值}}')]