He encontrado la respuesta abajo. En resumen, la sangría incorrecta en el ItemPipeline hizo que devuelva None.Scrapy Spider no devuelve ninguno en lugar del artículo
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 es la devolución de llamada function.//edit añadió el código de araña, así
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 elemento
class Article(Item):
url=Field()
author=Field()
text=Field()
title=Field()
excerpt=Field()
GRACIAS. El mensaje de error fue '' NoneType '' no tiene atributo 'iterkeys''. Tal vez puede ayudar a redirigir a Google aquí. – KrisWebDev