【问题标题】:BeautifulSoup error in google appengine谷歌应用引擎中的 BeautifulSoup 错误
【发布时间】:2012-04-27 02:29:09
【问题描述】:

我在 Google 应用引擎中创建了一个使用 Beautiful Soup 的应用程序。我正在使用它的最新版本,http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/。一切正常,直到我将其上传到 GAE。然后发生的事情是我收到了这个错误:

Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/s~app/1.358226218191077920/main.py", line 285, in get
    self.response.out.write(self.makeQuery("9147094591"))
  File "/base/data/home/apps/s~app/1.358226218191077920/main.py", line 191, in makeQuery
    from bs4 import BeautifulSoup
  File "/base/data/home/apps/s~app/1.358226218191077920/bs4/__init__.py", line 29, in <module>
    from .builder import builder_registry
  File "/base/data/home/apps/s~app/1.358226218191077920/bs4/builder/__init__.py", line 279, in <module>
    from . import _htmlparser
  File "/base/data/home/apps/s~app/1.358226218191077920/bs4/builder/_htmlparser.py", line 23, in <module>
    from bs4.element import (
  File "/base/data/home/apps/s~app/1.358226218191077920/bs4/element.py", line 6, in <module>
    from bs4.dammit import EntitySubstitution
  File "/base/data/home/apps/s~app/1.358226218191077920/bs4/dammit.py", line 254
    smart_quotes_re = b"([\x80-\x9f])"
                                     ^
SyntaxError: invalid syntax

当我查看 dammit.py 中的第 254 行时,我发现:

if (self.smart_quotes_to is not None
    and proposed.lower() in self.ENCODINGS_WITH_SMART_QUOTES):
    smart_quotes_re = b"([\x80-\x9f])"
    smart_quotes_compiled = re.compile(smart_quotes_re)
    markup = smart_quotes_compiled.sub(self._sub_ms_char, markup)

我真的看不出有什么问题。我尝试过其他版本的 BS,但它们不起作用,因为我使用的是 soup.select("CSS SELECTOR"),它似乎只能在最新版本中使用。

但是,正如我之前所说,它在我的计算机上运行良好,但在云中却不行。

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    BeautifulSoup 4 需要 Python 2.7 或更高版本,但 Appengine 默认使用 Python 2.5。您可以:

    【讨论】:

    • 它不需要付费应用。您只需要在app.yaml 文件中指定它。它还需要您明确地打开或关闭线程安全。
    • 我认为 GAE 上的 2.7 仍处于测试阶段。
    • @JoelCornett: Nope!
    • @JoelCornett 和所有Python 2.7 is GA
    • @JoelCornett 2.7 在 SDK 1.6.3 上获得了金牌,我相信。但是直到 SDK 1.6.4,由于一些 webob 依赖的恶作剧已经被修复,你才可以在本地进行实际开发。
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多