Python 刮码抛出TypeError:';非类型';对象是不可编辑的

Python 刮码抛出TypeError:';非类型';对象是不可编辑的,python,python-3.x,scrapy,Python,Python 3.x,Scrapy,我试图请求一个参数site\u search\u url,但运行时出现以下错误:``: start_requests = iter(self.spider.start_requests()) TypeError: 'NoneType' object is not iterable 代码: 我做错了什么 谢谢您的start\u请求不返回任何内容,这意味着在Python中返回None,而它应该返回请求对象的iterable。在您的情况下,最简单的方法是在中填充开始\u URL,并且不要覆盖开始\u

我试图请求一个参数
site\u search\u url
,但运行时出现以下错误:``:

start_requests = iter(self.spider.start_requests())
TypeError: 'NoneType' object is not iterable
代码:

我做错了什么


谢谢

您的
start\u请求
不返回任何内容,这意味着在Python中返回
None
,而它应该返回
请求
对象的iterable。在您的情况下,最简单的方法是在
中填充
开始\u URL
,并且不要覆盖
开始\u请求

class BrickSetSpider(scrapy.Spider):
    se_base = 'http://www.se.com/search?q=site:'
    def __init__(self, site_search_url):
        self.start_urls = [self.se_base + site_search_url]

    def parse(self, response):
        yield scrapy.Request(
            response.urljoin(next_page),
            callback=self.parse
        )

错误只是因为
start\u请求
没有显式的return语句,因此返回
None
。然后,您将尝试迭代返回值。要解决此问题,只需返回可从
start\u请求中读取的内容即可。我对您的代码了解不够,无法建议它可能返回什么。
class BrickSetSpider(scrapy.Spider):
    se_base = 'http://www.se.com/search?q=site:'
    def __init__(self, site_search_url):
        self.start_urls = [self.se_base + site_search_url]

    def parse(self, response):
        yield scrapy.Request(
            response.urljoin(next_page),
            callback=self.parse
        )