Не удается получить ссылку Image src с помощью XPath

Я использую Scrapy для сканирования ссылки src на изображение продукта на этом сайте:

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

По некоторым причинам Xpath не захватывает src-ссылки на изображения продуктов. Я попытался просканировать все ссылки на изображения src с сайта, протестировав их в Scrapy Shell, используя этот Xpath:

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?

Пожалуйста помоги.

Спасибо.


person Tatt Ehian    schedule 11.12.2015    source источник


Ответы (2)


Это связано с рендерингом javascript, обычный текст посещаемого вами сайта не содержит этой информации, но в процессе загрузки он заполняется скриптами javascript.

Вы также можете проверить это, установив в браузере расширение Toggle Javascript. вы можете проверить, что действительно загружается без javascript.

person eLRuLL    schedule 11.12.2015
comment
Понятно... спасибо за информацию. Есть ли другой способ очистить эти ссылки? - person Tatt Ehian; 11.12.2015
comment
пользователь firebug (в firefox) или инструменты разработчика chrome chrome, чтобы проверить, какой запрос возвращает нужную информацию, или вы можете использовать selenium для загрузки страницы, как браузер. - person eLRuLL; 11.12.2015

Это может быть связано с тем, что он получает более одного узла с помощью xpath - '//img'.

Попробуйте использовать следующий xpath, чтобы получить конкретный узел: .//img[содержит (src, '{{конкретное значение src}}')]

person NDP    schedule 14.12.2015