Ich habe die Antwort gefunden, unten. Kurz gesagt, falsche Einrückung in der ItemPipeline führte dazu, dass None zurückgegeben wurde.Scrapy Spider gibt keine zurück anstelle von Artikel
Ich habe versucht, einen CrawlSpider in Scrapy zu schreiben, noch nie zuvor mit Python gearbeitet. Der Spider crawlt, ruft die Callback-Funktion auf, extrahiert Daten und füllt das Element, gibt aber immer None zurück. Ich habe es mit einem Print-Artikel-Anruf getestet, alles war in Ordnung. Ich habe dies sowohl mit Rendite als auch mit Rendite versucht (obwohl ich den Unterschied immer noch nicht verstehe). Ehrlich gesagt, habe ich keine Ideen mehr. Da unten ist der Rückruf function.//edit die Spinne Code als auch
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
und die Artikeldefinition hinzugefügt
class Article(Item):
url=Field()
author=Field()
text=Field()
title=Field()
excerpt=Field()
DANKE. Fehlermeldung, dass das Objekt '' NoneType 'kein Attribut' iterkeys' hat. Vielleicht kann Google hier helfen, umzuleiten. – KrisWebDev