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

时间:2022-06-24
本文章向大家介绍一日一技:通过参数修改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了。