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

Scrapy中各类配置的区别及用法咨询:Crawler Settings等

Scrapy 各类配置的区别与用法

1. Project Settings(settings.py)

这是项目级的全局配置文件,创建Scrapy项目时自动生成,所有爬虫默认继承这里的配置。像USER_AGENT、ROBOTSTXT_OBEY这类通用规则,适合放在这里统一管理。

示例:
在项目根目录的settings.py中配置:

USER_AGENT = "MyGlobalScrapyBot/1.0"
ROBOTSTXT_OBEY = True
FEED_EXPORT_ENCODING = 'utf-8'

通过scrapy crawl <spider_name>启动的所有爬虫,都会默认使用这些配置,除非被更高级别的配置覆盖。

2. Crawler Settings

这是针对单个Crawler实例的临时配置,优先级高于Project Settings。当你用CrawlerProcess或CrawlerRunner手动编写启动脚本时,可传入自定义配置,只对当前启动的爬虫实例生效,不会影响全局。

示例(就是你给出的代码扩展版):

from scrapy.crawler import CrawlerProcess
from myproject.spiders.myspider import MySpider

# 自定义Crawler级配置,覆盖全局settings
process = CrawlerProcess(settings={
    "FEEDS": {
        "items.json": {"format": "json"},
    },
    "USER_AGENT": "TemporaryCrawlerBot/1.0",  # 替换全局UA
    "ROBOTSTXT_OBEY": False  # 临时关闭robots协议检查
})

process.crawl(MySpider)
process.start()

3. Spider Settings

这是单个爬虫类专属的配置,优先级最高,会覆盖前两种配置。在爬虫类里通过custom_settings属性定义,只对当前爬虫生效,适合给特定爬虫设置特殊规则。

示例:

import scrapy

class MySpecialSpider(scrapy.Spider):
    name = "special_spider"
    start_urls = ["https://example.com"]

    # 爬虫专属配置,优先级最高
    custom_settings = {
        "FEEDS": {
            "special_items.json": {"format": "json", "encoding": "utf-8"},
        },
        "DOWNLOAD_DELAY": 3,  # 单独给这个爬虫设置3秒下载延迟
        "USER_AGENT": "SpecialSpiderBot/1.0"
    }

    def parse(self, response):
        # 解析逻辑
        yield {"url": response.url, "title": response.css("title::text").get()}

优先级排序

Spider Settings(custom_settings) > Crawler Settings(CrawlerProcess传入的settings) > Project Settings(settings.py)

常见使用场景

  • 全局通用规则(比如默认UA、代理配置)写在settings.py
  • 临时启动爬虫需要调整配置(比如导出特定格式文件),用Crawler Settings
  • 某个爬虫有特殊需求(比如更高下载延迟、专属UA),用Spider Settings

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:20:58