前提・実現したいこと
Scrapyでスクレイピングを行っています。
"県" "カテゴリ"を入れ替えながら、動的にURLを指定しようとした際に、エラーが起きてしまいました。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "/home/ec2-user/venv/lib64/python3.7/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks result = g.send(result) File "/home/ec2-user/venv/lib64/python3.7/site-packages/scrapy/crawler.py", line 88, in crawl start_requests = iter(self.spider.start_requests()) TypeError: 'NoneType' object is not iterable
該当のソースコード
python
1class StorelistSpider(CrawlSpider): 2 name = "crawler" 3 4 # #パッチ間で永続的な状態を維持 5 # self.logger.info(self.state.get("state_key1")) 6 # self.state["state_key1"] = {"key":"value"} 7 # self.state["state_key2"] = 0 8 9 allowed_domains = ["example.com"] 10 11 def start_requests(self): 12 #Target Category 13 with open('CategoryList.txt') as f1: 14 for q1 in f1: 15 targetCategory = q1 16 17 #Target Prefecture 18 with open('prefectureList.txt') as f2: 19 for q2 in f2: 20 prefectureName = q2 21 22 23 start_urls=("https://example.com/" + q2 + "/") 24 25 #rules to follow links: 26 rules = ( 27 #follow area link first, then category link next, check list pages and go to the details 28 Rule(LinkExtractor( 29 allow=r"/\w+/A\d{4}/$", 30 restrict_xpaths = "//*[@id='js-leftnavi-area-scroll']", 31 unique = True,)), 32 Rule(LinkExtractor( 33 allow=r"/\w+/A\d{4}/rstLst/" + "{}".format(targetCategory) + r"/$", 34 restrict_xpaths = "//*[@id='js-leftnavi-genre-balloon']", 35 unique = True,)), 36 Rule(LinkExtractor( 37 allow=r"/\w+/A\d{4}/rstLst/" + "{}".format(targetCategory) + r"/\d*/$", 38 restrict_xpaths = "//*[@id='container']/div[15]/div[4]/div/div[7]/div/ul", 39 unique = True,)), 40 Rule(LinkExtractor( 41 allow=r"/\w+/A\d{4}/A\d{6}/\d+/$", 42 restrict_xpaths = "//*[@id='container']/div[15]/div[4]/div/div[6]", 43 unique = True, 44 ), callback="page_parse"), 45 ) 46 47 def page_parse(self, response): 48 yield Page.from_response(response) 49 50
試したこと
公式サイトなども見たのですが、
https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests
CrawlSpiderで、start_requestsを使用しているサンプルなどが発見できず、詰まってしまった次第です。
質問
エラー回避の方法、方針ご教示いただけると大変幸いです。
あなたの回答
tips
プレビュー