Python 完全迷路了。程序在本地100%解析html,但从应用程序引擎运行时失败

Python 完全迷路了。程序在本地100%解析html,但从应用程序引擎运行时失败,python,google-app-engine,Python,Google App Engine,我已经编写了一个小实用工具刮板,每天都会显示一些信息。它100%无故障运行,在本地运行时完全没有问题。它打开连接,创建BeautifulSoup对象,刮取其内容,并将所有内容打印到屏幕上。一切都很好 然而,当我在AppEngine上运行相同的代码时,出于某种原因,我突然得到了一个解析错误 代码非常简单 url = 'MY_URL' agent = ('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 '

我已经编写了一个小实用工具刮板,每天都会显示一些信息。它100%无故障运行,在本地运行时完全没有问题。它打开连接,创建BeautifulSoup对象,刮取其内容,并将所有内容打印到屏幕上。一切都很好

然而,当我在AppEngine上运行相同的代码时,出于某种原因,我突然得到了一个解析错误

代码非常简单

    url = 'MY_URL'
    agent = ('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 '
        '(KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31')

    headers = {'User-Agent' : agent}

    data = urllib.urlencode(form_data)
    req = urllib2.Request(url, headers=headers, data=data)
    return urllib2.urlopen(req).read()
因此,这将打开页面。然后我获取此页面,并使用
beautifulsou

page = get_page()
soup = BeautifulSoup(page)
就这样。就像我说的,跑得很好。我已经在本地运行了100次这个脚本,没有问题。现在,我想我应该把它放在应用程序引擎上。我原以为
urllib
请求会是个问题,但事实证明代码失败的地方是
BeautifulSoup
调用

AppEngines的日志显示错误:

soups = [BeautifulSoup(response) for response in responses]
  File "libs\bs4\__init__.py", line 172, in __init__
    self._feed()
  File "libs\bs4\__init__.py", line 185, in _feed
    self.builder.feed(self.markup)
  File "libs\bs4\builder\_htmlparser.py", line 150, in feed
    raise e
HTMLParseError: expected name token at u'<! /notices/notice.c', at line 51, column 3
soups=[BeautifulSoup(响应)表示响应中的响应]
文件“libs\bs4\\ uuuuu init\ uuuuu.py”,第172行,在\uuuu init中__
self._feed()
文件“libs\bs4\\ uuuuu init\ uuuuuu.py”,第185行,在\u提要中
self.builder.feed(self.markup)
提要中第150行的文件“libs\bs4\builder\\u htmlparser.py”
提高e

HTMLParseError:u'处应为名称标记,请参阅BeautifulSoup上关于的注释。BeautifulSoup使用第三方解析器,从系统上安装的任何东西中进行选择,并将
lxml
赋予最高优先级

每个解析器都有它的优点/缺点,有些解析器比其他解析器更为宽松。很可能您的本地系统上安装的解析器与AppEngine工作区不同,并且AppEngine上使用的解析器不太宽松


请参阅BeautifulSoup source
bs4/builder/_init__.py
底部的代码,了解当前支持的解析器列表及其优先级。

您是否在本地解析与App Engine相同的内容?因为这看起来不像是有效的HTML。啊,这就解决了。一旦我安装了
lxml
,它的解析就没有问题了。谢谢