一日一技:通过参数修改Scrapy的配置信息

我们在开发Scrapy爬虫的时候,会把一些常用配置信息写到settings.py中。

例如爬虫需要把数据存入MongoDB里面,那么我可能会把MongoDB的链接URI写到settings.py中:

MONGODB_URI = 'mongodb://localhost'MONGODB_DB = 'test'MONGODB_COL = 'info'

但在正式的项目中,我们开发爬虫的时候,一般会有一个测试数据库,而爬虫部署以后会有一个正式数据库,他们的URI是不一样的。

这个时候,可能有一些同学会把两个配置信息都写到settings.py中:

MONGODB_URI = 'mongodb://localhost'#MONGODB_URI = 'mongodb://user:password@123.15.43.32:7766'MONGODB_DB = 'test'MONGODB_COL = 'info'

在本地开发的时候,把正式环境的地址注释掉,部署的时候,解除正式环境URI的注释,然后把测试地址注释掉。

这种方式虽然简单直接,但容易忘记。特别是一不小心在本地把测试数据写入了正式环境的数据库,那就麻烦了。

但实际上,Scrapy可以在 scrapy crawl xxx的时候,传入配置信息。并且这个配置信息拥有最高优先级,即时settings.py中也有相同名字的配置,命令行传入的也会覆盖它。

在命令行传入配置信息的格式为:

scrapy crawl xxx -s MONGODB_URI='mongodb://user:password@123.15.43.32:7766'

当我们这样启动爬虫的时候,爬虫通过 self.settings['MONGODB_URI']获取到的URI就是正式环境的URI了。

原文发布于微信公众号 - 未闻Code(itskingname)

原文发表时间:2019-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券