python - scrapy的异常处理一般怎么做?
巴扎黑
巴扎黑 2017-04-17 17:50:26
0
3
452

发现在运行过程中有少量的请求有异常,或者请求响应了404 500之类的,又或者代码本身运行抛异常, 怎么记录这些异常呢。

巴扎黑
巴扎黑

全部回覆(3)
巴扎黑

我目前的做法是用下載中間件去捕捉失敗的請求,僅供大家參考

class CustomFaillogMiddleware(object):

    @classmethod
    def from_crawler(cls, crawler):
        return cls()

    def process_response(self, request, response, spider):
        if response.status >= 400:
            reason = response_status_message(response.status)
            self._faillog(request, u'HTTPERROR',reason, spider)
        return response

    def process_exception(self, request, exception, spider):
        self._faillog(request, u'EXCEPTION', exception, spider)
        return request

    def _faillog(self, request, errorType, reason, spider):
        with codecs.open('log/faillog.log', 'a', encoding='utf-8') as file:
            file.write("%(now)s [%(error)s] %(url)s reason: %(reason)s \r\n" %
                       {'now':datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                        'error': errorType,
                        'url': request.url,
                        'reason': reason})
迷茫

你是想透過log的方式來記錄異常嗎? Scrapy提供了log功能的

左手右手慢动作

http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/logging.html

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板