Scrapyの公式ドキュメントにあるようなスクリプトだと、なぜかちゃんと動かなかった。
(クローリング対象は日本語のサイト)
spider = FollowAllSpider(domain='scrapinghub.com')
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()
そこで、コマンドラインツール(scrapy crawl hogehoge)からの実行と同じように、Log周りの記述を修正したら動いた。
spider = FollowAllSpider(domain='scrapinghub.com')
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
log.start_from_crawler(crawler)
crawler.configure()
crawler.crawl(spider)
crawler.start()
reactor.run()
原因は、log.start()で実行すると、logがcrawlerを受け取らないからっぽい。
が、crawlerがないと動かない理由は不明。
scrapy/log.py
def start_from_crawler(crawler):
return start_from_settings(crawler.settings, crawler)