【发布时间】:2011-01-17 05:11:47
【问题描述】:
我创建了一个使用 cElementTree 解析 RSS 提要的 GAE 应用程序。在我本地安装的 GAE 上进行测试可以正常工作。当我上传此应用并尝试对其进行测试时,我收到了 SyntaxError。
错误是:
Traceback (most recent call last): File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 509, in __call__
handler.post(*groups) File "/base/data/home/apps/palmfeedparser/1-6.339910418736930444/pipes.py", line 285, in post
tree = ET.parse(urlopen(URL)) File "<string>", line 45, in parse File "<string>", line 32,
in parse SyntaxError: no element found: line 14039, column 45
我按照 Alex Martelli 先生的建议做了,它在我的本地机器上打印了以下内容:
[
' <ac:tag><![CDATA[Mobilit\xc3\xa4t]]></ac:tag>\n',
' </ac:tags>\n',
' <ac:images>\n',
' <ac:image ac:number="1">\n',
' <ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>\n'
]
我上传了应用程序并打印出来:
[
' <ac:tag><![CDATA[Mobilit\xc3\xa4t]]></ac:tag>\n',
' </ac:tags>\n',
' <ac:images>\n',
' <ac:image ac:number="1">\n',
' <ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>\n'
]
这些行对应于我正在阅读的 RSS 提要中的以下行:
<ac:tags>
<ac:tag><![CDATA[Mobilität]]></ac:tag>
</ac:tags>
<ac:images>
<ac:image ac:number="1">
<ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>
我注意到在结束 ac:tags 之前有一个换行符。第 14039 行对应于这个新行。
更新:
我使用 urllib.urlopen 访问提要的 URL。我显示了它在本地和 GAE 上获取的内容。在本地,没有内容被截断。上传应用后测试,15289行的feed被截断为14185行。
我可以使用什么方法来获取这个巨大的提要? urlfetch 会起作用吗?
提前感谢您的帮助!
A_iyer
【问题讨论】:
-
14039 行的内容可能会被超时效应截断。要调试,而不是直接调用
ET.parse,将这些行绑定到名称xx=urlopen(URL).readlines(),然后使用例如logging.info显示repr(xx[14037:14042])- 围绕您所看到的问题的一段内容。与您本地安装的 GAE SDK 相比,它在 GAE 上显示了什么?告诉我们(通过编辑此 Q),我们或许可以提供帮助。 -
感谢您的快速回复!正如你所提到的,我已经编辑了回复。