gpt4 book ai didi

python - XML 解析器语法错误

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:37 26 4
gpt4 key购买 nike

所以我正在处理与 Flickr API 通信的代码块。

我在 xml.parsers.expat.ExpatError 中遇到“语法错误” (以下)。现在我无法弄清楚它是如何成为 Python 模块中的语法错误的。

我在 SO 上看到了另一个关于维基百科 API 的类似问题,它似乎返回 HTML 而不是 XML。 Flickr API 返回 XML;当不应该有来自 Flickr 的响应(例如 flickr.galleries.addPhoto )时,我也会遇到同样的错误

代码:

def _dopost(method, auth=False, **params):
#uncomment to check you aren't killing the flickr server
#print "***** do post %s" % method

params = _prepare_params(params)
url = '%s%s/%s' % (HOST, API, _get_auth_url_suffix(method, auth, params))
payload = 'api_key=%s&method=%s&%s'% \
(API_KEY, method, urlencode(params))

#another useful debug print statement
#print url
#print payload

return _get_data(minidom.parse(urlopen(url, payload)))

回溯:

Traceback (most recent call last):
File "TESTING.py", line 30, in <module>
flickr.galleries_create('test_title', 'test_descriptionn goes here.')
File "/home/vlad/Documents/Computers/Programming/LEARNING/curatr/flickr.py", line 1006, in galleries_create
primary_photo_id=primary_photo_id)
File "/home/vlad/Documents/Computers/Programming/LEARNING/curatr/flickr.py", line 1066, in _dopost
return _get_data(minidom.parse(urlopen(url, payload)))
File "/usr/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 928, in parse
result = builder.parseFile(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: syntax error: line 1, column 62

(代码来自新 BSD 许可证下的 http://code.google.com/p/flickrpy/)

更新:

print urlopen(url, payload) == <addinfourl at 43340936 whose fp = <socket._fileobject object at 0x29400d0>>

urlopen(url, payload).read()返回在终端中难以阅读的 HTML :P 但我设法弄清楚了“您尚未登录”。
奇怪的是 Flickr 不应该在这里返回任何东西,或者如果权限有问题,它应该返回 99: User not logged in / Insufficient permissions。错误,因为它使用 GET 函数(我希望它是有效的 XML)。

我已登录到 Flickr(在浏览器中)并且该程序已通过 delete 正确验证权限(危险,但我想避免权限问题。)

最佳答案

SyntaxError 通常表示 Python 语法错误,但我认为这里 expatbuilder 重载它表示 XML 语法错误。在它周围放置一个 try:except block ,并打印出 payload 的内容并找出它的第一行有什么问题。

我的猜测是 flickr 出于某种原因拒绝您的请求并返回纯文本错误消息,该错误消息在第 62 列有一个无效的 xml 字符,但它可能是任何数量的东西。您可能想在解析之前检查 http 状态代码。

此外,这个方法称为 _dopost 有点奇怪,但您似乎实际上发送了一个 http GET。也许这就是它失败的原因。

关于python - XML 解析器语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com