sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo obtener el objeto de tubería en Scrapy spider

Un Scrapy Pipeline tiene un open_spider método que se ejecuta después de inicializar la araña. Puede pasar una referencia a la conexión de la base de datos, el método get_date() o el propio Pipeline a su araña. Un ejemplo de esto último con tu código es:

# 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

Luego, en la araña:

class Spider(Spider):
    name = "test"

    def __init__(self):
        self.myPipeline = None

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

No creo que __init__() El método es necesario aquí, pero lo puse aquí para mostrar que open_spider lo reemplaza después de la inicialización.