新版 Scrapy 中 sys.conf.settings 的替代方法
在 scrapy 項目目錄下,有個 settings.py 文件,此文件是用來存放爬蟲項目的各種配置,比如說 MongoDB 的服務器、端口號、數據庫名等配置信息。
既然是配置信息,就需要在別的文件中引用。比如在 settings.py 文件中增加了如下內容:
MONGODB_HOST = '127.0.0.1'
MONGODB_PORT = 27017
MONGODB_DBNAME = 'maitian'
MONGODB_DOCNAME = 'zufang'
而在 pipelins.py 中想要引用該配置,在以前的版本中,使用方法應為:
from scrapy.conf import settings
host = settings['MONGODB_HOST']
port = settings['MONGODB_PORT']
db_name = settings['MONGODB_DBNAME']
client = pymongo.MongoClient(host=host, port=port)
db = client[db_name]
self.post = db[settings['MONGODB_DOCNAME']]
我電腦上的版本為 1.7.3 ,用上述引用方法報錯,大概意思是沒有 scrapy.conf 這個模塊,在網上查了好久,發現在 1.7 版本之后,scrapy.conf 就被移除了,1.7 以后的版本里,正確使用 settings.py 中配置的方法為:
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
host = settings['MONGODB_HOST']
port = settings['MONGODB_PORT']
db_name = settings['MONGODB_DBNAME']
client = pymongo.MongoClient(host=host, port=port)
db = client[db_name]
self.post = db[settings['MONGODB_DOCNAME']]
即導入 get_project_settings 方法,該方法的返回值即是配置對象。
參考:https://github.com/scrapy/scrapy/pull/3578