joh*_*doe 4 python json scrapy
环境:Windows7、Python 3.6.5、Scrapy 1.5.1
问题描述:
我有一个名为 的scrapy 项目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'
Run Code Online (Sandbox Code Playgroud)
显然,spider1_TodaysDate.json无论使用什么蜘蛛,这段代码总是会写入......有什么建议吗?
这样做的方法是通过在特定蜘蛛下定义custom_settings一个class属性来编写项目导出器。Spider 设置会覆盖项目设置。
所以,对于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',
}
Run Code Online (Sandbox Code Playgroud)