You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy多爬虫输出文件名自定义:时间戳+网站名配置问询

我来给你几个实用的方案,完美解决这个需求,不用太复杂的改动:

方案1:命令行直接生成(无需改代码)

如果你不想动项目代码,直接在启动爬虫的命令里用shell命令生成带时间戳的文件名就行,非常快捷:

  • Linux/macOS 终端:
    用date命令生成你要的时间戳格式,拼接爬虫名(也就是网站名):

    scrapy crawl crawlera -o "$(date +%Y%m%d%H%M%S)_crawlera.json"
    

    这里%Y%m%d%H%M%S会生成类似20240520143522的时间戳,你可以根据需求调整格式(比如去掉秒就用%Y%m%d%H%M)。

  • Windows PowerShell:
    用Get-Date命令实现同样效果:

    scrapy crawl crawlera -o "$(Get-Date -Format 'yyyyMMddHHmmss')_crawlera.json"
    

这个方法的好处是零代码改动,适合临时或者快速执行的场景。

方案2:通过Scrapy配置自动生成(更优雅)

如果希望每次运行爬虫时不用手动拼命令,让系统自动生成符合要求的文件名,推荐修改项目的settings.py,利用Scrapy自带的Feed导出占位符:

  1. 打开项目根目录下的settings.py,添加以下配置:

    # 设置输出文件的命名规则:时间戳 + 爬虫名
    FEED_URI = '%(time)s_%(name)s.json'
    # 设置输出格式为JSON
    FEED_FORMAT = 'json'
    # 自定义时间戳的格式(默认是带横杠的,改成纯数字格式)
    FEED_EXPORT_TIMESTAMP_FORMAT = '%Y%m%d%H%M%S'
    

    这里的%(name)s会自动替换成当前运行的爬虫名称(比如crawlera),%(time)s会按照你指定的格式生成时间戳。

  2. 现在直接运行爬虫命令就行,不用加-o参数了:

    scrapy crawl crawlera
    

    系统会自动生成类似20240520143522_crawlera.json的文件。

进阶:如果爬虫名和网站名不一致怎么办?

比如你的爬虫名叫crawlera,但网站名是example_site,可以在每个爬虫的代码里单独设置custom_settings来覆盖全局配置:

import scrapy
from your_project.items import YourItem

class CrawleraSpider(scrapy.Spider):
    name = 'crawlera'
    # 定义网站名
    website_name = 'example_site'
    start_urls = ['https://www.example.com']

    # 单独配置当前爬虫的输出文件名
    custom_settings = {
        'FEED_URI': '%(time)s_' + website_name + '.json',
        'FEED_EXPORT_TIMESTAMP_FORMAT': '%Y%m%d%H%M%S'
    }

    def parse(self, response):
        # 你的解析逻辑
        item = YourItem()
        # 填充item字段
        yield item

这样每个爬虫可以独立设置对应的网站名,生成的文件名就会是20240520143522_example_site.json,完全符合你的需求。

内容的提问来源于stack exchange,提问作者itsmnthn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:24:23