2012-04-15 21 views
0

Ich habe eine Anwendung in Google App-Engine, die Beautiful Soup verwendet. Ich verwende die neueste Version davon, http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/. Alles hat gut funktioniert, bis ich es auf GAE hochgeladen habe. Die Sache, die dann passierte war, dass ich diesen Fehler hätte:BeautifulSoup Fehler in Google Appengine

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 

Als ich an der Linie 254 in dammit.py aussehen finde ich:

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) 

ich nicht wirklich sehen kann, was falsch ist. Ich habe andere Versionen von BS ausprobiert, aber sie funktionieren nicht, weil ich die supp.select ("CSS SELECTOR") verwende, die nur in der neuesten Version zu funktionieren scheint.

Aber, wie ich schon sagte, es funktionierte gut auf meinem Computer, aber nicht in der Cloud.

Antwort

2

BeautifulSoup 4 benötigt Python 2.7 oder neuer, aber Appengine hat standardmäßig Python 2.5. Sie können entweder:

+1

Es erfordert keine kostenpflichtige App. Sie müssen es nur in der 'app.yaml' Datei angeben. Außerdem müssen Sie Threadsafe explizit aktivieren oder deaktivieren. –

+0

Ich denke, 2,7 auf GAE ist immer noch in der Beta-Phase. –

+0

@JoelCornett: [Nein] (http://googleappengine.blogspot.co.uk/2012/02/announcing-general-availability-of.html)! –

Verwandte Themen