2012-02-20 13 views
6

मैं किसी दस्तावेज़ को पार्स करने के लिए BeautifulSoup v4 का उपयोग करने का प्रयास कर रहा हूं। मैं note.content पर BeautifulSoup फोन है, जो एक स्ट्रिंग Evernote के API द्वारा दिए है:Google ऐप इंजन पायथन 2.7 + एलएक्सएमएल = यूनिकोड पार्सररर

soup = BeautifulSoup(note.content)

मैं अपने app.yaml फ़ाइल में lxml सक्षम की हैं:

libraries: 
- name: lxml 
    version: "2.3" 

ध्यान दें कि यह अपने स्थानीय विकास पर काम करता है सर्वर।

त्रुटि ट्रेस:: हालांकि, जब Google के क्लाउड के लिए तैनात मैं निम्नलिखित त्रुटि मिलती है

Unicode parsing is not supported on this platform 
Traceback (most recent call last): 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__ 
    return handler.dispatch() 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch 
    return method(*args, **kwargs) 
    File "/base/data/home/apps/s~ever-blog/1.356951374446096208/controller/blog.py", line 101, in get 
    soup = BeautifulSoup(note.content) 
    File "/base/data/home/apps/s~ever-blog/1.356951374446096208/lib/bs4/__init__.py", line 168, in __init__ 
    self._feed() 
    File "/base/data/home/apps/s~ever-blog/1.356951374446096208/lib/bs4/__init__.py", line 181, in _feed 
    self.builder.feed(self.markup) 
    File "/base/data/home/apps/s~ever-blog/1.356951374446096208/lib/bs4/builder/_lxml.py", line 62, in feed 
    self.parser.feed(markup) 
    File "parser.pxi", line 1077, in lxml.etree._FeedParser.feed (third_party/apphosting/python/lxml/src/lxml/lxml.etree.c:76196) 
ParserError: Unicode parsing is not supported on this platform 

अद्यतन:

मैं parser.pxi की जाँच की है, और मैं कोड की इन पंक्तियों पाया जो त्रुटि उत्पन्न हुई:

elif python.PyUnicode_Check(data): 
      if _UNICODE_ENCODING is NULL: 
       raise ParserError, \ 
        u"Unicode parsing is not supported on this platform" 

मुझे लगता है कि जीएई के तैनाती पर्यावरण के बारे में कुछ होना चाहिए जो इस त्रुटि का कारण बनता है , लेकिन मुझे यकीन नहीं है कि क्या।

अद्यतन 2:

क्योंकि BeautifulSoup स्वचालित रूप से अन्य पारसर्स पर वापस आ जाएगा, मैं पूरी तरह से अपने आवेदन से lxml को हटाने के समाप्त हो गया। समस्या को ठीक करने के लिए।

+0

आप SDK या उत्पादन में उपयोग करते हुए इस त्रुटि है? (अथवा दोनों)। – proppy

+0

केवल उत्पादन में; यह स्थानीयहोस्ट के साथ एसडीके पर ठीक काम करता है। – zzz

+0

मुझे एक ही समस्या है, और lxml को हटाकर उतरा। हालांकि, पायथन के html.parser की उदारता काफी खराब है और इसके कारण मेरे अधिकांश पृष्ठों को पार्स नहीं किया जाता है –

उत्तर

1

यूनिकोड की बजाय utf-8 स्ट्रिंग को पार्स करने का प्रयास करें।

1

मई 2012 तक यह बग उत्पादन में अभी भी मौजूद है, लेकिन एसडीके (1.6.6) में नहीं है।

हालांकि, BS3 वापस करने के लिए रोलिंग यह उत्पादन पर नजरअंदाज समय से किया जा रहा के लिए:

http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html

संबंधित मुद्दे