Не удалось извлечь атрибут «src» из тега «img»

Я собираю HD-изображения на сайте электронной коммерции. Это блок html, содержащий нужный мне URL-адрес, как видно из инструментов разработчика.

<img class="_3togXc _3wp706" alt="" src="https://rukminim1.flixcart.com/image/880/1056/jtn9bww0/t-shirt/5/g/g/m-hm-1001-black-red-helmont-original-imafdfvvr8hqdu65.jpeg?q=50">

Но попытка извлечь src через response.xpath('//img[@class="_3togXc _3wp706"]/@src').extract() возвращает пустой список.

Вот веб-страница: 2&otracker= nmenu_sub_Men_0_T-Shirts&fm=organic&iid=en_gnuFJK6aCYh16bFjfooxjvp8RCgW1Qv5%2FUGcIk2pk%2B0jLtbLFo%2BqPL6Dtf5pUqburiU8mTUCC4lmPqYF651UZQ%3D%3D&ppt=browse&ppn=browse&ssid=mjlrz5luxs0000001570554928173" rel="nofollow noreferrer">https://www.flipkart.com/mufti-striped-men-henley-neck -blue-t-shirt/p/itmf97tf5musdzhn?pid=TSHF97EQJFKYZNVR&lid=LSTTSHF97EQJFKYZNVRTO8NYI&marketplace=FLIPKART&srno=b

<img class="_3togXc _3wp706" alt="" src="https://rukminim1.flixcart.com/image/880/1056/jtn9bww0/t-shirt/5/g/g/m-hm-1001-black-red-helmont-original-imafdfvvr8hqdu65.jpeg?q=50">
2&otracker=nmenu_sub_Men_0_T-Shirts&fm=organic&iid=en_gnuFJK6aCYh16bFjfooxjvp8RCgW1Qv5%2FUGcIk2pk%2B0jLtbLFo%2BqPL6Dtf5pUqburiU8mTUCC4lmPqYF651UZQ%3D%3D&ppt=browse&ppn=browse&ssid=mjlrz5luxs0000001570554928173

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


person Nikhil    schedule 08.10.2019    source источник
comment
См. docs.scrapy.org/en/latest/topics/dynamic-content. .html   -  person Gallaecio    schedule 16.10.2019


Ответы (2)


Проверьте, что в ответе. Похоже, он генерируется на стороне клиента.

Также вы не должны выбирать по классам, используя XPath, как это, по крайней мере, используйте contains() для каждого класса (или более сложный https://stackoverflow.com/a/1604480/964478) или лучше использовать селекторы CSS (img._3togXc._3wp706).

person Alex P.    schedule 08.10.2019

Попробуй это

In [7]: response.xpath('//*[@class="
In [11]: response.xpath('//*[@class="_2_AcLJ 
response.xpath('//*[@class="_2_AcLJ _3_yGjX"]/@style').re('background-image:url\((.*)\)')
yGjX"]/@style').re_first('background-image:url\((.*)\)') Out[11]: 'https://rukminim1.flixcart.com/image/128/128/jy1v7gw0/t-shirt/7/q/h/m-mfk-6564-g-16-blue-mufti-original-imaf97tfrbhdnhhn.jpeg?q=70'
AcLJ
response.xpath('//*[@class="_2_AcLJ _3_yGjX"]/@style').re('background-image:url\((.*)\)')
yGjX"]/@style').extract_first() Out[7]: 'background-image:url(https://rukminim1.flixcart.com/image/128/128/jy1v7gw0/t-shirt/7/q/h/m-mfk-6564-g-16-blue-mufti-original-imaf97tfrbhdnhhn.jpeg?q=70)'

or

In [11]: response.xpath('//*[@class="_2_AcLJ 
response.xpath('//*[@class="_2_AcLJ _3_yGjX"]/@style').re('background-image:url\((.*)\)')
yGjX"]/@style').re_first('background-image:url\((.*)\)') Out[11]: 'https://rukminim1.flixcart.com/image/128/128/jy1v7gw0/t-shirt/7/q/h/m-mfk-6564-g-16-blue-mufti-original-imaf97tfrbhdnhhn.jpeg?q=70'

окончательный

response.xpath('//*[@class="_2_AcLJ _3_yGjX"]/@style').re('background-image:url\((.*)\)')

заменить /image/128/128/ ------ /image/800/960

person Wertartem    schedule 09.10.2019