Python 2.7 用刮痧喂狗
我正在寻找一个简单的教程,解释如何从scrapy将项目写入数据库。在MongoDB中可以找到类似的代码。这里是“将项目写入MongoDB”一行与RejectDB对应的翻译 几点注意: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文档说
的第二个参数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