Antwort

2

Hier ist eine Übersetzung von "Write items to MongoDB" Zeile für Zeile mit RethinkDB.

Ein paar Anmerkungen:

  • Ich bin mir nicht sicher, wo crawler.settings gesetzt sind.
  • Die scrapy docs sagen process_item ‚s zweiten param item ein Objekt oder dict sein kann, so dass die .insert(dict(item)) Guss/Konvertierung ist wahrscheinlich notwendig.

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 
+0

danken Ihnen für Sie Code, leider war ich zu ihrer Umsetzung nicht in der Lage. Ich denke, ich muss mein Verständnis von RethinkDB zuerst vertiefen ... Crawler-Einstellungen werden in setting.py gesetzt – crocefisso

+0

Was war der Fehler, der zurückkam? – dalanmiller

+0

@crocefisso, lassen Sie mich wissen, wenn das schließlich funktioniert, würde ich gerne etwas veröffentlichen, das zeigt, wie RethinkDB mit scrapy basierend darauf aufgebaut wird! – dalanmiller