gpt4 book ai didi

python - 带有 pythonanywhere 的 Python 脚本的 XML 解析错误(但不在本地机器上)

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:05 30 4
gpt4 key购买 nike

我正在使用 python 运行一个 flask 应用程序,其中一部分使用从第三方 API 检索的 XML 数据。我使用 minidom 在 python 脚本中解析 XML。

相关python代码:

from xml.dom import minidom
import requests

usa_xml = requests.get(URL_HERE)
usa_parsed = minidom.parseString(usa_xml.content)

脚本继续查找和显示 XML 中的值。在我的本地机器上运行 python 脚本,一切正常。将存储库放在 pythonanywhere 上后,解析失败并显示相同的 XML 数据。

错误回溯:

Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.4/dist-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/jshorty/OwlWire/owlwire.py", line 65, in select
usa_parsed = minidom.parseString(usa_xml.content)
File "/usr/lib/python3.4/xml/dom/minidom.py", line 1970, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python3.4/xml/dom/expatbuilder.py", line 925, in parseString
return builder.parseString(string)
File "/usr/lib/python3.4/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: no element found: line 29, column 7

由于使用相同的 XML 会失败,否则它会起作用,所以这似乎不是 XML 本身的问题。我不知道从哪里开始寻找问题 - 我正在使用 pythonanywhere 上预安装的所有默认模块,这可能是不同版本的 minidom 的问题吗?

错误始终出现在第 29 行第 7 列,因此这是指向我正在访问的 XML 的一个实例的链接: http://ebird.org/ws1.1/data/obs/region_spp/recent?rtype=country&r=US&sci=surnia%20ulula&back=30&maxResults=1&includeProvisional=true

最佳答案

我猜您使用的是免费帐户。 PythonAnywhere 上的免费帐户限制了 Internet 访问,您只能访问白名单中的站点:

https://www.pythonanywhere.com/wiki/403ForbiddenError

https://www.pythonanywhere.com/whitelist/

如果您调整代码以执行以下操作,您会发现:

usa_xml = requests.get(URL_HERE)
print(usa_xml)

你可能会看到一个

<Response [403]> 

403 被禁止。

我们(PythonAnywhere 团队)通常很乐意将具有公共(public) API 的站点添加到白名单中。 ebird.com 看起来不错,我会看看是否可以添加它。对于有类似请求的任何其他人,如果您看到 403,请不要犹豫与我们联系!

关于python - 带有 pythonanywhere 的 Python 脚本的 XML 解析错误(但不在本地机器上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24580337/

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