python scrapy-spider six

python - Scrapy: AttributeError: el objeto ''list'' no tiene atributo ''iteritems''



scrapy-spider six (2)

Esta es mi primera pregunta sobre el desbordamiento de pila. Recientemente, quiero usar el enlace linked-in-scraper , así que descargué e indiqué "Scrapy Crawl linkedin.com" y recibí el siguiente mensaje de error. Para su información, uso anaconda 2.3.0 y python 2.7.11. Todos los paquetes relacionados, incluidos scrapy y six, se actualizan por pip antes de ejecutar el programa.

Traceback (most recent call last): File "/Users/byeongsuyu/anaconda/bin/scrapy", line 11, in <module> sys.exit(execute()) File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/cmdline.py", line 108, in execute settings = get_project_settings() File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/utils/project.py", line 60, in get_project_settings settings.setmodule(settings_module_path, priority=''project'') File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 285, in setmodule self.set(key, getattr(module, key), priority) File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 260, in set self.attributes[name].set(value, priority) File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 55, in set value = BaseSettings(value, priority=priority) File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 91, in __init__ self.update(values, priority) File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 317, in update for name, value in six.iteritems(values): File "/Users/byeongsuyu/anaconda/lib/python2.7/site-packages/six.py", line 599, in iteritems return d.iteritems(**kw) AttributeError: ''list'' object has no attribute ''iteritems''

Entiendo que este error se debe a que d no es el tipo de diccionario sino el tipo de lista. Y dado que el error proviene del código en scrapy, tal vez sea un problema en un paquete scrapy o en un paquete de seis. ¿Cómo puedo intentar arreglar este error?

EDITAR: Este es el código de scrapy.cfg

# Automatically created by: scrapy start project # # For more information about the [deploy] section see: # http://doc.scrapy.org/topics/scrapyd.html [settings] default = linkedIn.settings [deploy] #url = http://localhost:6800/ project = linkedIn


Esto se debe a la settings del rascador vinculado:

ITEM_PIPELINES = [''linkedIn.pipelines.LinkedinPipeline'']

Sin embargo, se supone que ITEM_PIPELINES es un dict, según el documento :

Para activar un componente Item Pipeline, debe agregar su clase a la configuración ITEM_PIPELINES , como en el siguiente ejemplo:

ITEM_PIPELINES = { ''myproject.pipelines.PricePipeline'': 300, ''myproject.pipelines.JsonWriterPipeline'': 800, }

Los valores enteros que asigna a las clases en esta configuración determinan el orden en el que se ejecutan: los elementos pasan de las clases de menor valor a las de mayor valor. Es habitual definir estos números en el rango 0-1000.

De acuerdo con esta pregunta , solía ser una lista, lo que explica por qué este raspador usa una lista. Por lo tanto, tendrá que pedirle a su desarrollador del raspador que actualice su código, o configurar ITEM_PIPELINES usted mismo.


La respuesta corta es que ITEM_PIPELINES debe ser un diccionario, no una lista con la clave como la clase de canalización y un valor entero que determina el orden en el que se ejecutan: los elementos pasan de las clases de menor valor a las de mayor valor. Es habitual definir estos números en el rango 0-1000. Según lo explicado por @valentin Lorentz.