1. 程式人生 > 其它 >新版 Scrapy 中 sys.conf.settings 的替代方法

新版 Scrapy 中 sys.conf.settings 的替代方法

新版 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 方法,該方法的返回值即是配置物件。