scrapy 2.6.1 でエラーハンドリングする

Pythonで使えるスクレイピングのライブラリの「scrapy」で、spider内でエラーが起きた時のハンドリング方法を紹介します。

手順1: middlewares.py の修正

プロジェクト作成時に、あらかじめmiddlewares.py が自動作成されるので、これを修正します。

process_spider_exception関数を修正します。

    def process_spider_exception(self, response, exception, spider):
        spider.logger.error("########")
        spider.logger.error("### PROCESS_SPIDER_EXCEPTION ###")
        spider.logger.error(exception)
        spider.logger.error("########")

        return [{
            "url": response.url,
            "status": response.status,
            "error": str(exception),
        }]

手順2: settings.py の修正

settings.py で、SPIDER_MIDDLEWARES がコメントアウトになっているので、コメントを外して有効にします。

# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
SPIDER_MIDDLEWARES = {
    'myproject_scrapy.middlewares.MyprojectScrapySpiderMiddleware': 543,
}

以上で、spiderでエラーが出た時に、ログに情報を出力できます。

参考URL

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です