【问题标题】:Parsing HTML in Google App Engine in python with BeautifulSoup?使用 BeautifulSoup 在 Python 中解析 Google App Engine 中的 HTML?
【发布时间】:2011-01-20 19:27:17
【问题描述】:

我一直在使用BeautifulSoup 来解析来自多个站点的 HTML,并将每个站点添加到 GAE 任务队列中。然而,任务队列似乎重复了 2 个任务,这些任务似乎要么在日志中生成 ApplicationError: 5 错误,要么因 'NoneType' 对象没有属性 'findAll' 而失败,当我在 IDLE 上测试它时,当美丽的汤在我通过它的页面中找不到任何东西时,它生成了 None 对象。我添加了下面的代码,但这似乎不能解决问题:

productTable = soup.find('table')

            if productTable == None:
                logging.error('Could not find the product table')
                break

            if productTable.findAll('table') == None:
                logging.error('Product table was empty')
                break

我想知道是否有人可以就问题所在给我一些建议,以便我修复它。

【问题讨论】:

  • 将结果与None 进行比较的正确方法是使用if blah is None,因为None 是单例而不是值。
  • 对不起,4天前才开始用python编码:)。所以我一直在寻找编码示例来弄清楚 python 如何处理 None。很高兴知道,谢谢!

标签: python google-app-engine html-parsing beautifulsoup


【解决方案1】:

应用程序错误可能表明您检索 HTML 的 urlfetch 失败。任务队列将自动重试任务,直到成功(如果使用默认设置)。如果它只是偶尔发生一次并且在重试后消失,我不会太担心这个错误。如果给定任务反复失败,那么我怀疑您尝试获取的资源存在问题。

如果您在使用之前首先检查productTable 不是None,那么您应该不会收到'NoneType' object has no attribute 'findAll' 错误。您的检查失败似乎不会导致您的 productTable.findall 调用被绕过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2018-02-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多