【问题标题】:How can I log scraping error and move on without halting script如何在不停止脚本的情况下记录抓取错误并继续前进
【发布时间】:2017-09-21 12:44:43
【问题描述】:

我正在使用 python 和 beautifulsoup 来抓取网站。我的脚本总是在到达某个 url 并声明时停止

AttributeError: 'NoneType' 对象没有属性 'find_all'

我预计该网站的其他区域也会发生这种情况。我想要的是记录错误和创建它的 url,然后继续而不停止我的脚本。 这个我试过了

  uClient2 = ''
  try:
     uClient2 = requests.get(FSGsubcardref)
     print("Proceding to get the sub_subblink...")
  except Exception as error:
      logger.exception(error)
      print("Connection refused by the server..")
      time.sleep(8)
      continue

当连接丢失时它不会停止,但它仍然会因属性错误而停止。我怎样才能只记录错误并继续?

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    您需要将预期发生异常的地方分开。在上面的代码中,您在连接到站点和检索页面时遇到了异常。您提到的AttributeError 在您成功检索页面后发生。所以你必须有一些代码来进行 bs4 解析。您需要在哪里捕获异常:

    soup = BeautifulSoup(content)
    try:
        tags = soup.find_all()
        # whatever else you do
    except AttributeError as e:
        logger.error(e)
    

    【讨论】:

    • 好的。我可以使它适用于在 bs4 解析期间发现的任何错误吗?这样它就不会仅仅因为属性错误?
    • 当然,如果你愿意,你可以抓住Exception。一般来说,最好是捕获特定的错误并有处理它们的例程,但是捕获一般的Exception 是很好的开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多