[Python-es] Fwd: Comando de scrapy para generar pipeline

Rolando Espinoza La Fuente darkrho en gmail.com
Mie Mar 31 22:08:34 CEST 2010


2010/3/31 Olemis Lang (Simelix) <olemis+py en gmail.com>:
[...]
>
> Bueno, para ya aprovechar este hilo, quiero parametrizar un pipeline
> que utilice un ItemExporter .
>
> Q:
>  - ¿Es posible reutilizar
> scrapy.contrib.pipeline.fileexport.FileExportPipeline ?

Según veo, el FileExportPipeline no soporta añadir exporters dinámicamente.
Pero es buena idea.

>  - En caso positivo, ¿Cómo añado el nuevo exporter para que sea
>     consistente con EXPORT_FILE | EXPORT_FORMAT ?
>  - ¿Cómo logro leer, desde el exporter o el pipeline, otros settings que
>      necesitaré ?

Si quieres seguir el api de los exporters, podrías extender un existente
o el scrapy.contrib.exporter.BaseItemExporter

Y luego hacer un pipeline similar al FileExport pero sólo para tu exporter.

Pero puedes irte directo por el camino del pipeline, algo como

# imports

class MyPipeline(object):
    def __init__(self):
         # initialize resources
         self.file = open("items.dat", "w+")
         dispatcher.connect(self.engine_stopped, signals.engine_stopped)

    def process_item(self, spider, item):
         # format line from item...
         line = ",".join(item.values())
         self.file.write(line + "\n")
         return item

    def engine_stopped(self):
         # close resources and cleanup
         self.file.close()

Sobre el settings, te refieres a algo como:

from scrapy.conf import settings

flag = settings.getbool('CUSTOM_FLAG')
value = settings.get('CUSTOM_VALUE', 'default_value')

Saludos

~Rolando



Más información sobre la lista de distribución Python-es