Settings
Scrapy设定(settings)提供了定制Scrapy组件的方法。您可以控制包括核心(core),插件(extension),pipeline及spider组件。
设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace)。 设定可以通过下面介绍的多种机制进行设置。
设定(settings)同时也是选择当前激活的Scrapy项目的方法(如果您有多个的话)。
获取设定值(Populating the settings)
设定可以通过多种方式设置,每个方式具有不同的优先级。 下面以优先级降序的方式给出方式列表:
命令行选项(Command line Options)(最高优先级)
每个spider的设定
项目设定模块(Project settings module)
命令默认设定模块(Default settings per-command)
全局默认设定(Default global settings) (最低优先级)
常用示例
命令行选项(Command line options)
命令行传入的参数具有最高的优先级。
您可以使用command line 选项 -s
(或 --set
) 来覆盖一个(或更多)选项。
日志记录样例:
scrapy crawl myspider -s LOG_FILE=scrapy.log
数据输出:
scrapy crawl myspider -o result.json
内置设置常用键值:
BOT_NAME
默认: 'scrapybot'
Scrapy项目实现的bot的名字(也未项目名称)。 这将用来构造默认 User-Agent,同时也用来log。
当您使用 startproject 命令创建项目时其也被自动赋值。
LOG_LEVEL
默认: 'DEBUG'
log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。参考Python logging使用; 调试使用Debug,上线后使用INFO.
ROBOTSTXT_OBEY
默认: False
如果启用,Scrapy将会尊重 robots.txt策略. 可以先确定目标站点是否有robots文件(有的站点真的没有这玩意==!), 不启用的话Scrapy启动速度会快一些.
DOWNLOAD_DELAY
默认: 0
下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度, 减轻服务器压力。同时也支持小数, 最好修改下设置一个3到5秒的值, 速度太快可能会被目标站点拉黑的.
DOWNLOAD_TIMEOUT
默认: 180 (秒)
ITEM_PIPELINES
默认: {}
保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内。
使用自定义PIPELINES对Item处理需要在这里面启用才会生效.
样例:
ITEM_PIPELINES = { 'mybot.pipelines.validate.ValidateMyItem': 300, 'mybot.pipelines.validate.StoreMyItem': 800, }
USER_AGENT
默认: "Scrapy/VERSION (+http://scrapy.org)"
爬取的默认User-Agent,除非被覆盖,在发起请求(Request)时可以通过headers参数指定来覆盖该值:
scrapy.Request(url=地址,headers={"User-Agent": 指定UA将覆盖设置中设定的UA})
配合Faker使用效果更佳.