为什么我不能通过response.css获得所有图像链接?

时间:2019-08-07 14:45:17

标签: python web-scraping scrapy

我正在尝试提取图像的所有链接,但是我只能使用

提取每个属性页面上的主图片。
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']

1 个答案:

答案 0 :(得分:1)

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