Scrapy settings总结

2022-08-23  本文已影响0人  会爬虫的小蟒蛇

官方文档:https://scrapy-chs.readthedocs.io

Scrapy配置分两种,分别是全局配置和局部配置(局部配置可以覆盖全局配置)

全局配置以赋值的方式书写在settings.py中

ROBOTSTXT_OBEY = False

局部配置以字典形式书写在Spider文件中

class BaiDuSpider(scrapy.Spider):
    name = 'BaiDu'
    start_urls = ['http://www.baidu.com']
    custom_settings = {
        'ROBOTSTXT_OBEY': False,
    }
    
    def parse(self, response):
        print(response)

BOT_NAME

当使用 startproject 命令创建项目时其也被自动赋值

BOT_NAME = 'ProjectName'

SPIDER_MODULES

crawl命令到此目录下寻找爬虫运行

SPIDER_MODULES = ['ProjectName.spiders']

NEWSPIDER_MODULE

genspider创建的爬虫被放到此目录下

NEWSPIDER_MODULE = 'ProjectName.spiders'

ROBOTSTXT_OBEY

是否遵守机器人协议(大多数情况遵守协议是写不了爬虫的)

ROBOTSTXT_OBEY = False

CONCURRENT_REQUESTS

最大的并发请求数量(默认16)

CONCURRENT_REQUESTS = 16

DEFAULT_REQUEST_HEADERS

设置默认请求头(会被局部headers覆盖)

DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

USER_AGENT

对请求头中User-AGENT进行设置

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63'

DOWNLOAD_DELAY

下载器延迟

DOWNLOAD_DELAY = 0.25 #下载延迟0.25秒

DOWNLOAD_TIMEOUT

下载器超时设置(默认180秒)

DOWNLOAD_TIMEOUT = 180

COOKIES_ENABLED

是否携带cookies (默认True),设置为False可以起到禁用cookies的作用

COOKIES_ENABLED = True

COOKIES_DEBUG

是否追踪cookies(默认为False)

COOKIES_DEBUG = False

PROXIES

代理设置(建议在中间件中配置)

PROXIES = [
   {'ip_port': '111.11.228.75:80', 'password': ''},
   {'ip_port': '120.198.243.22:80', 'password': ''},
]

DOWNLOAD_HANDLERS

爬虫协议管理

DOWNLOAD_HANDLERS = {
    # 请求协议提升为http2
    'https': 'scrapy.core.downloader.handlers.http2.H2DownloadHandler',
}

HTTPERROR_ALLOWED_CODES

忽略某些状态码(一般用于处理重定向)

HTTPERROR_ALLOWED_CODES = [302, 304]

LOG_ENABLED

是否启用日志(默认True)

LOG_ENABLED = True

LOG_ENCODING

日志编码设置(默认 ‘utf-8’)

LOG_ENCODING = 'utf-8'

LOG_LEVEL

日志等级设置

LOG_LEVEL = 'LOG_LEVEL' # 严重错误
LOG_LEVEL = 'ERROR' # 一般错误
LOG_LEVEL = 'WARNING' # 警告信息
LOG_LEVEL = 'INFO' # 一般信息
LOG_LEVEL = 'DEBUG' # 调试信息

LOG_FILE

日志输出文件名

LOG_FILE = "test.log"
上一篇下一篇

猜你喜欢

热点阅读