首页 > 解决方案 > 为什么我无法通过 response.css 获取所有图片链接?

问题描述

我正在尝试提取图像的所有链接,但我只能使用提取每个属性页面上的主图片

response.css('div.col-sm-12 img.visible-print-block::attr(src)').get()

除此之外,当我尝试使用此代码提取其余图像时,我得到一个空数组。如何解决这个问题?


class WebBox2Spider(scrapy.Spider):
    def parse(self, response):
        for prop in response.css('div.grid-item'):
            link = prop.css('div.property-image a::attr(href)').get()
            yield scrapy.Request(
                link,
                callback=self.get_loc,
                meta={'item': {
                    'url': link,
                }},
            )

    def get_loc(self, response):
        item = response.meta.get('item')

        pics_link =  response.css('div.gallery img::attr(src)').getall()

        item['images'] = pics_link

        return item

--------------------------------------------------------------------

class CapeWaterfrontSpider(WebBox2Spider):
    name = "cape_waterfront_estates"
    start_urls = ['https://www.capewaterfrontestates.co.za/template/Properties.vm/listingtype/SALES',
                  'https://www.capewaterfrontestates.co.za/template/Properties.vm/listingtype/MONTHLY_RENTAL']

标签: pythonweb-scrapingscrapy

解决方案


您可以使用scrapy shellhtml 的外观来检查 scrapy。您尝试获取的内容是动态加载的,因此您必须调整您的选择器,例如:pics_link = response.xpath('//*[@data-nav="thumbs"]//@data-full').extract()


推荐阅读