使用pythonanywhere的Python脚本的XML解析错误(但不在本地计算机上)

使用pythonanywhere的Python脚本的XML解析错误(但不在本地计算机上),python,xml,minidom,pythonanywhere,Python,Xml,Minidom,Pythonanywhere,我正在用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) Traceback (most recent call last):

我正在用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)
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中的值。在本地机器上运行python脚本,一切正常。在pythonanywhere上建立了一个存储库后,解析会在使用相同的XML数据时失败

错误回溯:

from xml.dom import minidom
import requests

usa_xml = requests.get(URL_HERE)
usa_parsed = minidom.parseString(usa_xml.content)
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本身的问题。我在哪里开始寻找问题?我正在使用所有预先安装在Pythonywhere上的默认模块,这可能是不同版本的minidom的问题吗


错误总是在第29行第7列,因此这里有一个指向我正在访问的XML实例的链接:

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

您将看到,如果您调整代码以执行以下操作:

usa_xml = requests.get(URL_HERE)
print(usa_xml)
你可能会看到一个

<Response [403]> 

403被禁止


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

听起来有可能。您在每台机器上使用的是什么版本?这些是我本地机器上的版本:
C:\Users\Jake>pip freeze Flask==0.10.1 Flask SQLAlchemy==1.0 Jinja2==2.7.2 MarkupSafe==0.23 SQLAlchemy==0.9.4 Werkzeug==0.9.4 itswardiable==0.24请求==2.3.0 virtualenv==1.11.6
Hmm,Python内置了minidom。我看到您在Pythonywhere上使用Python3.4,从堆栈跟踪可以看出。您是否也在本地计算机上使用3.4?是的。我还确定解析过程中遇到的错误总是在同一个位置(第29行第7列);我将用一个链接编辑这篇文章,链接到我正在访问的XML样本。ebird.org的可能副本现在在白名单上。再试一次!是的,我确实使用了一个免费帐户,这解决了这个问题。我认为这意味着与解析相关的错误是因为没有收到要解析的XML,尽管我真的不明白为什么它指定了第一行/列以外的内容。谢谢