recherche

Maison  >  Questions et réponses  >  le corps du texte

python - scrapy的异常处理一般怎么做?

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

巴扎黑巴扎黑2889 Il y a quelques jours461

répondre à tous(3)je répondrai

  • 巴扎黑

    巴扎黑2017-04-17 17:52:26

    Mon approche actuelle consiste à utiliser un middleware de téléchargement pour capturer les demandes ayant échoué, à titre de référence uniquement

    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})

    répondre
    0
  • 迷茫

    迷茫2017-04-17 17:52:26

    Voulez-vous enregistrer les exceptions via le journal ? Scrapy fournit une fonction de journal

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 17:52:26

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

    répondre
    0
  • Annulerrépondre