Scrapy - использовать экспортер кормов для конкретного паука (а не других) в проекте - PullRequest
0 голосов
/ 15 ноября 2018

СРЕДА: Windows7, Python 3.6.5, Scrapy 1.5.1

ОПИСАНИЕ ПРОБЛЕМЫ:

У меня есть проект под названием project_github, который содержит 3 паука: spider1, spider2, spider3. Каждый из этих пауков копирует данные с конкретного веб-сайта, принадлежащего этому пауку.

Я пытаюсь автоматически экспортировать файл JSON при выполнении определенного паука в формате: NameOfSpider_TodaysDate.json, чтобы из командной строки я мог:

Выполнить скрипт scrapy crawl spider1, который возвращает spider1_181115.json

В настоящее время я использую ITEM EXPORTERS в settings.py со следующим кодом:

import datetime
FEED_URI = 'spider1_' + datetime.datetime.today().strftime('%y%m%d') + '.json'
FEED_FORMAT = 'json'
FEED_EXPORTERS = {'json': 'scrapy.exporters.JsonItemExporter'}
FEED_EXPORT_ENCODING = 'utf-8'

Очевидно, этот код всегда пишет spider1_TodaysDate.json независимо от используемого паука ... Есть предложения?

1 Ответ

0 голосов
/ 15 ноября 2018

Способ сделать это, определив custom_settings как атрибут class под конкретным пауком, для которого пишется экспортер предметов. Настройки паука переопределяют настройки проекта.

Итак, для spider1:

from scrapy.settings.default_settings import FEED_EXPORT_ENCODING, FEED_EXPORTERS, FEED_FORMAT, FEED_URI

class spider1(scrapy.Spider):
name = "spider1"
allowed_domains = []

custom_settings = {
    FEED_URI: 'spider1_' + datetime.datetime.today().strftime('%y%m%d') + '.json',
    FEED_FORMAT: 'json',
    FEED_EXPORTERS: {
        'json': 'scrapy.exporters.JsonItemExporter',
    },
    FEED_EXPORT_ENCODING: 'utf-8',
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...