2017-02-06 33 views
3

イムはパラメータsite_search_urlのための要求をしようが、私は実行したときに、私は次のエラーを取得する: ``:Scrapyコードは例外TypeError:「NoneType」オブジェクトが反復可能ではありません

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

コード:

class BrickSetSpider(scrapy.Spider): 
    def __init__(self, site_search_url): 
     self.site_search_url = site_search_url 

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

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

私はここで間違っていますか?それはRequestオブジェクトの反復可能なを返す必要がありながら

は、あなたにPythonで戻りNoneを意味

+0

エラーは 'start_requests'は、明示的なreturn文を持っていないので、' NONE'を返すことだけです。次に、戻り値を反復しようとしています。これを解決するには、単に 'start_requests'からiterableであるものを返します。私はそれが何を返すかもしれないかを示唆するのに十分なあなたのコードを知りません。 –

答えて

6

あなたstart_requests戻り何を、ありがとうございました。あなたのケースでは、最も簡単なの__init__start_urlsを移入するとstart_requestsをオーバーライドしていないです。

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 
     ) 
関連する問題