Как загрузить изображения из Scrapy Python и сохранить их в папку и их путь в переменной - PullRequest
0 голосов
/ 28 сентября 2018
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

1 Ответ

0 голосов
/ 28 сентября 2018

Scrapy имеет встроенный механизм загрузки файлов, медиа-конвейеры .

. В простейшем случае вы бы задали поле для вашего элемента (file_urls или * 1006).*), активируйте конвейер в вашем settings.py и установите путь (FILES_STORE или IMAGES_STORE), в который вы хотите загрузить.
Если вам нужно внести дополнительные изменения, вы можете создать собственный подкласс.

Этого достаточно, чтобы загрузить нужные файлы, а также сохранить некоторые дополнительные метаданные.

...