아래 답변을 찾았습니다. 즉, ItemPipeline의 들여 쓰기가 잘못되어 None을 반환하게되었습니다.Scrapy Spider는 Item 대신 None을 반환합니다.
저는 Scrapy에서 CrawlSpider를 작성하려고 시도 했었습니다. 이전에는 Python을 사용 해본 적이 없었습니다. Spider는 크롤링하고 콜백 함수를 호출하고 데이터를 추출하고 항목을 채 웁니다.하지만 항상 None을 반환합니다. 난 인쇄 기사 호출로 모든 것을 순서대로 테스트 해봤습니다. 나는 yield와 return 모두로 이것을 시도했다. (여전히 차이를 이해할 수는 없지만). 솔직히 말해서 나는 아이디어가 부족합니다. 아래로 아래의 콜백 function.//edit뿐만 아니라
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
및 항목 정의를 거미 코드를 추가입니다
class Article(Item):
url=Field()
author=Field()
text=Field()
title=Field()
excerpt=Field()
감사합니다. ''NoneType '객체에는'iterkeys '속성이 없습니다라는 오류 메시지가 있습니다. Google이 여기에서 리디렉션하는 데 도움이 될지도 모릅니다. – KrisWebDev