Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器
Posted
技术标签:
【中文标题】Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器【英文标题】:Scrapy - Use feed exporter for a particular spider (and not others) in a project 【发布时间】:2019-04-18 12:33:43 【问题描述】:环境: Windows7、Python 3.6.5、Scrapy 1.5.1
问题描述:
我有一个名为project_github
的scrapy 项目,其中包含3 个蜘蛛:spider1
、spider2
、spider3
。这些蜘蛛中的每一个都会将特定网站个人的数据抓取到该蜘蛛。
我正在尝试在执行特定蜘蛛时自动导出 JSON 文件,格式为:NameOfSpider_TodaysDate.json
,这样我就可以从命令行:
执行返回spider1_181115.json
的脚本scrapy crawl spider1
目前我在settings.py
中使用ITEM EXPORTERS
,代码如下:
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】:这样做的方法是将custom_settings
定义为class
属性,具体蜘蛛正在为其编写项目导出器。蜘蛛设置覆盖项目设置。
所以,对于spider1
:
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',
【讨论】:
就在今天我遇到了打印日期的问题,并使用了你的方式,直到我通过str(datetime.date.today())
找到了更短的方式以上是关于Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器的主要内容,如果未能解决你的问题,请参考以下文章