我如何从Pipelines.py

时间:2019-05-21 13:26:12

标签: python python-3.x scrapy pipeline

我有3个Spider文件和类。而且我想将项目信息保存在csv文件中,该文件具有不同的文件名被告,即搜索条件的变量参数。为此,我需要访问Spider类参数。

所以我的问题是三个。

  1. 如何访问Spider类的参数?
  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 :(得分:0)

  1. 您可以使用大多数管道方法中传递的spider参数从pipeline.py访问蜘蛛类和实例属性。

例如,:

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

但是,如果您确实需要从Spider进行设置,则可以为每个Spider使用自定义设置,例如:

 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')