scraping follow example espaƱol python python-2.7 web-scraping scrapy

python - follow - Scrapy Spider devuelve None en lugar de Item



scrapy python install (1)

Encontré la respuesta, abajo. En resumen, la sangría incorrecta en el ItemPipeline hizo que devuelva None.

He estado intentando escribir un CrawlSpider en Scrapy, nunca antes había trabajado con python. El Spider rastrea, llama a la función de devolución de llamada, extrae datos y llena el elemento, pero siempre devuelve Ninguno. Lo probé con una llamada a un artículo impreso, todo estaba en orden. He intentado esto con rendimiento y rendimiento (aunque todavía no entiendo la diferencia). Francamente, me he quedado sin ideas. Abajo se encuentra la función de devolución de llamada .//edit también agregó el código araña

class ZeitSpider(CrawlSpider): name= xxxx allowed_domains = [''example.com''] start_urls = [''http://www.example.com/%d/%d'' %(JAHR,39)] rules = (Rule(SgmlLinkExtractor(restrict_xpaths=(''//ul[@class="teaserlist"]/li[@class="archiveteaser"]/h4[@class="title"]'')),callback=''parse_url'',follow=True),) def parse_url(self,response): def parse_url(self,response): hxs = HtmlXPathSelector(response) article = Article() article[''url'']= response.url.encode(''UTF-8'',errors=''strict'') article[''author'']= hxs.select(''//div[@id="informatives"]/ul[@class="tools"]/li[@class="author first"]/text()'').extract().pop().encode(''UTF-8'',errors=''strict'') article[''title'']= hxs.select(''//div[@class="articleheader"]/h1/span[@class="title"]/text()'').extract().pop().encode(''UTF-8'',errors=''strict'') article[''text'']= hxs.select(''//div[@id="main"]/p/text()'').extract().pop().encode(''UTF-8'',errors=''strict'') article[''excerpt''] = hxs.select(''//p[@class="excerpt"]/text()'').extract().pop().encode(''UTF-8'',errors=''strict'') yield article

y la definición del artículo

class Article(Item): url=Field() author=Field() text=Field() title=Field() excerpt=Field()


Ok, después de recorrer el programa con pdb encontré el error:

Como tengo varias arañas, quería escribir varias ItemPipelines. Para hacer que se diferencien por Spider, agregué un

if spider.name==''SpiderName'' return item

Observe la sangría. The Pipeline no devolvió nada y, por lo tanto, el resultado pasó a ser None.

Después de cambiar la sangría, la araña funcionó a la perfección. Otro ejemplo de PEBCAC.