MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ottenere l'oggetto pipeline in Scrapy spider

Una pipeline Scrapy ha un open_spider metodo che viene eseguito dopo l'inizializzazione dello spider. Puoi passare un riferimento alla connessione al database, al metodo get_date() o alla pipeline stessa al tuo spider. Un esempio di quest'ultimo con il tuo codice è:

# This is my Pipline
class MongoDBPipeline(object):
    def __init__(self, mongodb_db=None, mongodb_collection=None):
        self.connection = pymongo.Connection(settings['MONGODB_SERVER'], settings['MONGODB_PORT'])
        ....

    def process_item(self, item, spider):
        ....
    def get_date(self):
        ....

    def open_spider(self, spider):
        spider.myPipeline = self

Poi, nel ragno:

class Spider(Spider):
    name = "test"

    def __init__(self):
        self.myPipeline = None

    def parse(self, response):
        self.myPipeline.get_date()

Non credo che il __init__() il metodo è necessario qui, ma lo metto qui per mostrare che open_spider lo sostituisce dopo l'inizializzazione.