通过imagepipeline下载多个项目

时间:2019-03-19 13:31:23

标签: scrapy scrapy-pipeline

我正在尝试从网站下载所有图像,但是每页/每项只能返回一张图像。我试图让我的蜘蛛下载页面上显示的所有图像。

        for elem in response.xpath("//img"):
        img_url = elem.xpath("@src").extract_first()
        l.add_value('image_urls', [img_url])
        l.add_value('url', response.url)
        l.add_value('project', self.settings.get('BOT_NAME'))
        l.add_value('spider', self.name)
        l.add_value('server', socket.gethostname())
        l.add_value('date', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        return l.load_item()

当我将.extract_first()更改为.extract()时,蜘蛛将停止运行,但是我无法确定如何将每个图像url(页面上可以有数十个)作为自己的项目+下载。 / p>

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您只会得到一张图像,因为return会立即退出您的方法。使用yield代替return来实现所需的行为。

有关详细信息,请参见this other answer