首页 > 解决方案 > 如何从scrapy python下载图像并将它们保存到文件夹及其变量中的路径

问题描述

import scrapy
import json


class Brand(scrapy.Item):
    name = scrapy.Field()
    url = scrapy.Field()
    brand_image = scrapy.Field()
    productsList = scrapy.Field()


class QuotesSpider(scrapy.Spider):
    name = "brandDetails"
    def start_requests(self):
        with open('brands.json') as data_file:
            data_item = json.load(data_file)
        urls = list()
        for item in data_item:
            urls.append(item["url"])
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        item = Brand()
        name = response.css("div.th::text").extract_first()
        name = name.replace('Products of ', '')
        item['name'] = name
        item['url'] = response.url

我想下载一个图像和 url 看起来像这样"/get.aspx?id=1988147" ,并将下载的图像保存到一个文件中,保存路径在项目中,如item['image'].

        image = response.css("div.productimage img::attr(src)").extract_first()
        # example of src of image = > /get.aspx?id=1988147
        yield item

标签: python-3.xseleniumscrapyscrapy-spiderscrapy-item

解决方案


Scrapy 具有用于下载文件、媒体管道的内置机制。

在最简单的情况下,您将设置项目的字段(file_urlsimage_urls),激活您的管道,并设置要下载到settings.py的路径(FILES_STORE或)。 如果需要进行其他更改,可以创建自定义子类。IMAGES_STORE

这足以下载您想要的文件,以及保存一些额外的元数据。


推荐阅读