как я могу получить доступ к параметру переменной в классе паука из pipelines.py - PullRequest
0 голосов
/ 21 мая 2019

У меня есть 3 файла паука и классов.И я хочу сохранить информацию об элементе в файле CSV, который имеет другое имя файла ответчик переменный параметр условия поиска.Для этого мне нужно получить доступ к параметру класса паука.

Итак, у меня три вопроса.

  1. Как мне получить доступ к параметру класса паука?
  2. Чтолучший способ сделать каждый CSV-файлы?Условие триггера заключается в том, что при новом анализе будет вызываться запрос на получение нового результата поиска.
  3. logger = logging.getLogger(__name__) это не работает в pipelines.py Как я могу распечатать эту информацию?

Сильфонмой стиль кода лога

logger.log(logging.INFO,'\n======= %s ========\n', filename)

Я много раз искал пути в Google.Но я не смог найти решение.

Я пытался использовать функцию from_crawler, но не смог найти адаптированный кейс

Scrapy 1.6.0
python 3.7.3
os window 7 / 32bit

Код:

class CensusGetitemSpider(scrapy.Spider):
    name = 'census_getitem'
    startmonth=1
    filename = None

def parse(self, response):
    for x in data:
       self.filename = str(startmonth+1)
       .
       .  
       .
       yield item

    yield scrapy.Request(link, callback=self.parse)

1 Ответ

0 голосов
/ 21 мая 2019
  1. Вы можете получить доступ к атрибутам класса паука и экземпляра из pipe.py, используя параметр spider, передаваемый в большинстве методов конвейера.

Например:

open_spider(self, spider):
    self.filename = spider.name

Подробнее о конвейерах можно посмотреть здесь https://docs.scrapy.org/en/latest/topics/item-pipeline.html

  1. Вы можете сохранить его прямо из командной строки, просто укажите имя файла:

scrapy crawl yourspider -o output.csv

Но если вам действительно нужно настроить его от паука, вы можете использовать индивидуальные настройки для каждого паука, например:

 class YourSpider(scrapy.Spider):
    name = 'yourspider'
    start_urls = 'www.yoursite.com'
    custom_settings = {
        'FEED_URI':'output.csv',
        'FEED_FORMAT': 'csv',
    }
  1. Использование spider.logger.info('Your message')
...