我创建了一个使用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
我做了Mr.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:标签之前有一个换行符。 14039行对应于这一新行。
更新
我使用urllib.urlopen来访问Feed的网址。我在本地和GAE上显示了它所提取的内容。在本地,没有内容被截断。上传应用程序后进行测试,显示有15289行的Feed被截断为14185行。
我可以用什么方法来获取这个巨大的Feed? urlfetch会工作吗?
提前感谢您的帮助!
A_iyer
答案 0 :(得分:0)
你可能已经遇到了GAE的一个神秘限制。
Urlopen已经被谷歌覆盖了它的urlfetch方法,因此它应该没有任何区别。 (尽管可能值得尝试,但GAE中有很多隐藏的东西)
换行符不应影响cElementTree。
AppEngine日志中是否还有其他日志消息? (关于urlopen请求?)