Как загрузить файл в произвольном формате в корзину AWS S3 с помощью Scrapinghub? - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время я создаю серверную часть Python, которая будет развертывать список элементов в корзине S3 в нужном мне формате с использованием службы Scrapinghub и модуля Scrapy. Сделал цикл по страницам и начал выдавать элементы в следующем формате на каждой странице. Я предоставил вам способ получения предметов.

spider.py

def parse(self, response):

    links = response.selector.xpath('//a[@class="item"]/@href').getall()
    names = response.selector.xpath('//a[@class="item"]/text()').getall()

    yield { 'links': links,'names': names }

В файле pipelines.py Я сделал custom JSON Конвейер для получения файла json в следующем формате:

{
    "list_of_objects": [
            {
                "links": "link",
                "names": "name"
            },
            {...},
            {...},
            ...
    ]
}

pipelines.py

class JsonWriterPipeline(object):
    items_list = []

    def open_spider(self, spider):
        self.file = open('items.json', 'wb')
        self.exporter = JsonItemExporter(self.file, encoding='utf-8', ensure_ascii=False)
        self.exporter.start_exporting()

    def process_item(self, item, spider):

        self.items_list.append(item)
        return item

    def close_spider(self, spider):

        def_dict = defaultdict(list)
        def_dict['list_of_objects'] = self.items_list

        self.exporter.export_item(def_dict)
        self.exporter.finish_exporting()
        self.file.close()

Прежде всего Я запускаю этого паука локально и получаю нужный формат. Затем я развернул паука в Scrapinghub, сделал конфигурацию в проекте для загрузки в корзину AWS S3.

Мне удалось запустить spider на Scrapinghub, а затем я посмотрел на результат json в ведре AWS S3. Мне удалось найти файл и AWS, но формат был не тот, который я искал.

[
    {
         "links": "link",
         "names": "name"
    },
    {...},
    {...},
    ...
]

Есть ли у вас какие-либо предложения, почему файла не было в корзине S3 в формате Я ожидал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...