settings.py
是 Scrapy 项目的配置文件,包含了许多用于配置爬虫行为的选项。以下是 settings.py
中一些常见的配置项及其功能和作用:
- BOT_NAME:
- 作用:定义爬虫的名称。
- 示例:
BOT_NAME = 'mybot'
- SPIDER_MODULES 和 NEWSPIDER_MODULE:
- 作用:定义了爬虫模块的路径,用于寻找爬虫。
- 示例:
SPIDER_MODULES = ['myproject.spiders']
和NEWSPIDER_MODULE = 'myproject.spiders'
- USER_AGENT:
- 作用:定义用户代理,模拟浏览器请求。
- 示例:
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
- ROBOTSTXT_OBEY:
- 作用:定义是否遵循 robots.txt 规则。
- 示例:
ROBOTSTXT_OBEY = True
- CONCURRENT_REQUESTS:
- 作用:定义同时发送的请求数量。
- 示例:
CONCURRENT_REQUESTS = 32
- DOWNLOAD_DELAY 和 RANDOMIZE_DOWNLOAD_DELAY:
- 作用:设置下载延迟和是否随机化下载延迟。
- 示例:
DOWNLOAD_DELAY = 2
和RANDOMIZE_DOWNLOAD_DELAY = True
- COOKIES_ENABLED:
- 作用:定义是否启用 Cookies。
- 示例:
COOKIES_ENABLED = False
- DEFAULT_REQUEST_HEADERS:
- 作用:设置默认的请求头。
- 示例:
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}
- ITEM_PIPELINES:
- 作用:定义启用的 Item Pipeline,控制数据的处理流程。
- 示例:
ITEM_PIPELINES = {'myproject.pipelines.MyPipeline': 300}
- LOG_LEVEL:
- 作用:设置日志级别。
- 示例:
LOG_LEVEL = 'DEBUG'
- FEED_FORMAT 和 FEED_URI:
- 作用:定义数据导出的格式和存储路径。
- 示例:
FEED_FORMAT = 'json'
和FEED_URI = 'output.json'
- CONCURRENT_REQUESTS_PER_DOMAIN 和 CONCURRENT_REQUESTS_PER_IP:
- 作用:设置每个域名和 IP 地址的并发请求数量。
- 示例:
CONCURRENT_REQUESTS_PER_DOMAIN = 8
和CONCURRENT_REQUESTS_PER_IP = 0
- AUTOTHROTTLE_ENABLED:
- 作用:定义是否启用自动限速。
- 示例:
AUTOTHROTTLE_ENABLED = True
- HTTPCACHE_ENABLED:
- 作用:定义是否启用 HTTP 缓存。
- 示例:
HTTPCACHE_ENABLED = True
- DNSCACHE_ENABLED:
- 作用:定义是否启用 DNS 缓存。
- 示例:
DNSCACHE_ENABLED = True
- DOWNLOADER_MIDDLEWARES:
- 作用:定义下载中间件,允许在请求/响应处理过程中进行操作。
- 示例:
DOWNLOADER_MIDDLEWARES = {'myproject.middlewares.CustomDownloaderMiddleware': 543}
- SPIDER_MIDDLEWARES:
- 作用:定义爬虫中间件,允许在爬取过程中进行操作。
- 示例:
SPIDER_MIDDLEWARES = {'myproject.middlewares.CustomSpiderMiddleware': 543}
- DOWNLOAD_TIMEOUT:
- 作用:定义下载超时时间(单位:秒)。
- 示例:
DOWNLOAD_TIMEOUT = 180
- RETRY_TIMES 和 RETRY_HTTP_CODES:
- 作用:定义请求重试次数和需要重试的 HTTP 状态码。
- 示例:
RETRY_TIMES = 3
和RETRY_HTTP_CODES = [500, 502, 503, 504, 522, 524, 408]
- HTTPERROR_ALLOWED_CODES:
- 作用:定义在响应状态为 HTTP 错误码时仍然被处理的额外的 HTTP 错误码。
- 示例:
HTTPERROR_ALLOWED_CODES = [404]
- LOG_FILE:
- 作用:定义日志输出的文件名。
- 示例:
LOG_FILE = 'scrapy.log'
- TELNETCONSOLE_ENABLED 和 TELNETCONSOLE_PORT:
- 作用:定义是否启用 Telnet 控制台以及 Telnet 控制台的端口号。
- 示例:
TELNETCONSOLE_ENABLED = False
和TELNETCONSOLE_PORT = None
- EXTENSIONS:
- 作用:定义扩展,用于对 Scrapy 运行时进行控制和监控。
- 示例:
EXTENSIONS = {'scrapy.extensions.telnet.TelnetConsole': None}
- DUPEFILTER_CLASS:
- 作用:定义去重过滤器的类。
- 示例:
DUPEFILTER_CLASS = 'scrapy.dupefilters.RFPDupeFilter'
- MEDIA_ALLOW_REDIRECTS:
- 作用:定义是否允许在下载器中进行媒体重定向。
- 示例:
MEDIA_ALLOW_REDIRECTS = True