2012-04-15 2 views
0

Я сделал приложение в Google приложении, которое использует Beautiful Soup. Я использую последнюю версию, http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/. Все работало нормально, пока я не загрузил его в GAE. Дело в том, что случилось тогда, что я получил эту ошибку:Ошибка BeautifulSoup в 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 

Когда я смотрю на линии 254 в dammit.py я нахожу это:

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»), который работает только в последней версии.

Но, как я сказал ранее, он работал отлично на моем компьютере, но не в облаке.

ответ

2

BeautifulSoup 4 нуждается в Python 2.7 или новее, но Appengine имеет Python 2.5 по умолчанию. Вы можете:

  • Use Python 2.7 on Appengine (Edit:. Не требует платного приложения Благодаря Греве.)

  • Использование BeautifulSoup 3 на данный момент.

+1

Это не требует платного приложения. Вам нужно только указать его в файле 'app.yaml'. Это также потребует, чтобы вы включили или отключили потоковое освещение в явном виде. –

+0

Я думаю, что 2.7 на GAE все еще в бета-версии. –

+0

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

Смежные вопросы