如何从scrapy python下载图像并将其保存到文件夹及其变量中的路径

时间:2018-09-28 17:27:58

标签: python-3.x selenium scrapy scrapy-spider scrapy-item

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

我要下载图片和网址,看起来像这样"/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

1 个答案:

答案 0 :(得分:0)

Scrapy具有用于下载文件media pipelines的内置机制。

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

这足以下载所需的文件,并保存一些其他元数据。