Python 2.7 用刮痧喂狗

Python 2.7 用刮痧喂狗,python-2.7,scrapy,rethinkdb,rethinkdb-python,scrapy-pipeline,Python 2.7,Scrapy,Rethinkdb,Rethinkdb Python,Scrapy Pipeline,我正在寻找一个简单的教程,解释如何从scrapy将项目写入数据库。在MongoDB中可以找到类似的代码。这里是“将项目写入MongoDB”一行与RejectDB对应的翻译 几点注意: 我不确定爬虫程序设置在哪里 scrapy文档说process\u item的第二个参数item可以是 对象或dict,因此可能需要执行.insert(dict(item))转换/转换 谢谢你的代码,不幸的是我无法实现它。我想我必须先加深对DB的理解。。。爬虫程序设置在设置中设置。py@crocefisso,让

我正在寻找一个简单的教程,解释如何从scrapy将项目写入数据库。在MongoDB中可以找到类似的代码。

这里是“将项目写入MongoDB”一行与RejectDB对应的翻译

几点注意:

  • 我不确定爬虫程序设置在哪里
  • scrapy文档说
    process\u item
    的第二个参数
    item
    可以是 对象或
    dict
    ,因此可能需要执行
    .insert(dict(item))
    转换/转换


谢谢你的代码,不幸的是我无法实现它。我想我必须先加深对DB的理解。。。爬虫程序设置在设置中设置。py@crocefisso,让我知道如果这最终奏效,我想发布一些东西,展示如何在此基础上使用scrapy设置RejectionDB@dalanmiler,我目前正在学习数据科学,我正在从头开始学习Python、Scrapy和RejectionDB,因为我没有计算方面的背景(除了Hobbing)。对于某个类,我使用RejectDB规划了一个项目,并从scrapy获取数据。由于时间有限,我没有时间在scrapy中实现一个管道,按照我的意愿将项目存储到RinthinkDB。我刚刚结束了对DB导入函数的使用。但对于我的下一个项目(几周后),我计划再试一次,并更彻底地研究这个问题。一旦我再次陷入其中,我将与你分享我的发现。很高兴听到@crocefisso!如果您需要更直接的帮助,请加入我们的Slack channel。除了RejectionDB_URI和RejectionDB_数据库之外,我还在RejectionDBPipeline中添加了RejectionDB_端口设置,效果非常好。另外-附带说明-如果您使用的是conda软件包管理器,则数据库不可用。。我刚刚将RejectDB从默认Python(3.5)发行版的Site Packages目录复制到Miniconda Site Packages目录中,它没有任何问题。
import rethinkdb as r

class RethinkDBPipeline(object):

    table_name = 'scrapy_items'

    def __init__(self, rethinkdb_uri, rethinkdb_port, rethinkdb_db):
        self.rethinkdb_uri = rethinkdb_uri
        self.rethinkdb_port = rethinkdb_port
        self.rethinkdb_db = rethinkdb_db

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            rethinkdb_uri=crawler.settings.get('RETHINKDB_URI'),
            rethinkdb_db=crawler.settings.get('RETHINKDB_DATABASE', 'items')
        )

    def open_spider(self, spider):
        self.conn = r.connect(
            host = self.rethinkdb_uri, 
            port = self.rethinkdb_port,
            db = self.rethinkdb_db)

    def close_spider(self, spider):
        self.conn.close()

    def process_item(self, item, spider):
        r.table(self.table_name).insert(dict(item)).run(self.conn)
        return item