Scrapy 将 python 列表传递给项目加载器

问题描述 投票:0回答:1

我想提取一个图像 url 列表,并使用 scrapy item loaders 以列表格式存储它

我可以使用提取方法获取列表格式的图像 url,但它只存储一张图像。

代码: def parseVictimData(自我,回应): victimItem = ItemLoader(项目=CaimItem(),选择器=响应) victimItem.add_value('listing_url', response.meta['listing_url']) 图片 = response.xpath('//figure[contains(@data-fancybox,"gallery")]/@href').extract() victimItem.add_value('victim_image_url', 图片) victimItem.add_xpath('listing_title', '//[@id="weldioo"]/section[1]/div[2]/div/div/div/h1')

期望的输出:

'image_urls': ['image1.jpg', 'image2.jpg', 'image3.jpg']

python scrapy
1个回答
0
投票

使用 MapConpose 试试这个

from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose

class MySpider(scrapy.Spider):
    name = "my_spider"

    def parseVictimData(self, response):
        victimItem = ItemLoader(item=CaimItem(), selector=response)
        victimItem.add_value('listing_url', response.meta['listing_url'])
        victimItem.add_xpath('listing_title', '//[@id="weldioo"]/section[1]/div[2]/div/div/div/h1')
        Images = response.xpath('//figure[contains(@data-fancybox,"gallery")]/@href')
        victimItem.add_xpath('victim_image_url', '//figure[contains(@data-fancybox,"gallery")]/@href', MapCompose(str.strip))
        yield victimItem.load_item()
© www.soinside.com 2019 - 2024. All rights reserved.