В настоящее время я создаю серверную часть 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 в формате Я ожидал?