Я пытался собрать информацию с этого сайта https://www.fineandcountry.com/sa/property-for-sale/cape-town-clifton/property/929703, и у меня возникли проблемы с получением всех изображений собственности: они внутри атрибутного стиля, что вызывает у меня некоторую проблему. Что я пытался сделать:
images = response.xpath("//div[@class='search-results-gallery-property'] /a[@class='rotator_thumbs']/@style").extract()
Но пока это пусто.
Вот как это выглядит:
<div class="search-results-gallery-property"> <a style="background-image: url(https://static.propertylogic.net/property/8/200673/IMG_200673_3_small.jpg);" class="rotator_thumbs"> </a></div>
Любые предложения о том, чтоЯ делаю неправильно / как извлечь из атрибута стиля? Спасибо!
Кажется, что имя класса, с которым вы пробовали, генерируется динамически. Вот как они находятся в источнике страницы:
<a href="https://static.propertylogic.net/properties/8/972/1900/929703/IMG_yPAH7LUOOusZs642oS1TjGTl9WIXaOUKWWMsXiSnL0luoixXTAyNV32n9kiM_hd.jpeg" class="fancybox-thumbs col-md-4 col-sm-6 col-xs-12" data-fancybox-group="property-images" style="margin-bottom: 10px; padding-right: 5px; padding-left: 5px;"> <div class="col-md-12" style="background: url('https://static.propertylogic.net/properties/8/972/1900/929703/IMG_yPAH7LUOOusZs642oS1TjGTl9WIXaOUKWWMsXiSnL0luoixXTAyNV32n9kiM_small.jpeg'); height: 160px; padding-right: 0px; padding-left: 0px; background-size: cover; background-position: center;"> </div> </a>
Вы можете пойти с любым из двух, чтобы получить грубые ссылки на изображения:
for item in response.css('a[data-fancybox-group="property-images"] > [style^="background"]::attr(style)').getall(): yield {"image_link":item} for item in response.xpath('//a[@data-fancybox-group="property-images"]/*[starts-with(@style,"background")]/@style').getall(): yield {"image_link":item}
Кстати, вы можете использовать .re() для разбора каждого URL (используя SIM код):
.re()
for item in response.xpath('//a[@data-fancybox-group="property-images"]/*[starts-with(@style,"background")]/@style').re(r"url\('([^']+)"): yield {"image_link":item}