使用Scrapy CrawlSpider遇TypeError:'Rule'对象不可迭代问题求助
问题解决:TypeError: 'Rule' object is not iterable
错误出在rules的定义上。当你用元组包裹单个Rule对象时,必须在元素末尾添加逗号,否则Python会将其解析为单个Rule实例,而非可迭代的元组类型,这就导致了报错。
修正后的代码如下:
import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class DogstatsSpider(CrawlSpider): name = "dogstats" allowed_domains = ["www.ukdogracing.net"] start_urls = ["http://www.ukdogracing.net/todays-runners/"] rules = ( Rule(LinkExtractor(allow='runners'), callback='parse_item'), # 添加逗号,明确这是元组 ) def parse_item(self, response): yield { 'dogtime' : "test" }
你也可以改用列表来定义rules,这样就不需要额外加逗号:
rules = [ Rule(LinkExtractor(allow='runners'), callback='parse_item') ]
CrawlSpider要求rules必须是包含Rule对象的可迭代结构(元组或列表),只要满足这个要求就能解决该错误。
内容的提问来源于stack exchange,提问作者user2115136
相关产品推荐
相关产品推荐

