首页 > 解决方案 > 将 Scrapy 管道连接到 Firestore 数据库时遇到问题

问题描述

我是一个 Python NOOB,试图使用 Python 3 将 Scrapy 结果写入 Firebase Firestore。Spider 结果正确记录到控制台,但我似乎无法写入我的 Firestore 数据库。任何帮助是极大的赞赏。

错误信息:

db = firestore.client()
AttributeError: module 'google.cloud.firestore' has no attribute 'client'

管道文件:

import firebase_admin
from firebase_admin import credentials, firestore
from google.cloud import firestore
    
    
    class DataProcessPipeline:
    
        def __init__(self):
            cred = credentials.Certificate('./serviceAccountKey.json')
            firebase_admin.initialize_app(cred,
                {
                  'databaseURL': 'https://xxxxxxxxxxx.firebaseio.com'
                }
            )
    
        def process_item(self, item, spider):
            db = firestore.client()
            doc_ref = db.collection('f1_articles')
            doc_ref.add(item.to_dict())
            # doc_ref.insert(dict(item))
            return item

标签: python-3.xweb-scrapingscrapy

解决方案


你有一个错字Client()而不是client()

db = firestore.Client()

文档中:

from google.cloud import firestore

# Add a new document
db = firestore.Client()
doc_ref = db.collection(u'users').document(u'alovelace')
doc_ref.set({
    u'first': u'Ada',
    u'last': u'Lovelace',
    u'born': 1815
})

# Then query for documents
users_ref = db.collection(u'users')

for doc in users_ref.stream():
    print(u'{} => {}'.format(doc.id, doc.to_dict()))

推荐阅读