Как динамически создавать настройки JOBDIR в Scrpay Spider? - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу создать JOBDIR настройку из Spider __init__ или динамически, когда я вызываю этого паука. Я хочу создать разные JOBDIR для разных пауков, например FEED_URI в приведенном ниже примере

    class QtsSpider(scrapy.Spider):
    name = 'qts'
    custom_settings = {
        'FEED_URI': 'data_files/' + '%(site_name)s.csv',
        'FEED_FORMAT': "csv",
        #'JOBDIR': 'resume/' + '%(site_name2)s'
    }
    allowed_domains = ['quotes.toscrape.com']
    start_urls = ['http://quotes.toscrape.com']


    def __init__(self, **kw):
        super(QtsSpider, self).__init__(**kw)
        self.site_name = kw.get('site_name')

    def parse(self, response):
        #our rest part of code 

и мы называем этот скрипт таким образом

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings


def main_function():
    all_spiders = ['spider1','spider2','spider3'] # 3 different spiders
    process = CrawlerProcess(get_project_settings())
    for spider_name in all_spiders:
        process.crawl('qts', site_name = spider_name )

    process.start()

main_function()

Как добиться этого динамического создания JOBDIR для разных Пауков, таких как FEED_URI ?? Помощь будет оценена.

1 Ответ

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

Точно так же, как вы установили имя_сайта, вы можете передать другой аргумент,

process.crawl('qts', site_name=spider_name, jobdir='dirname that you want to keep')

будет доступно как атрибут пауков, поэтому вы можете написать

def __init__(self):
    jobdir = getattr(self, 'jobdir', None)    

    if jobdir:
        self.custom_settings['JOBDIR'] = jobdir
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...