Requests.get返回XML字符串的错误字符

时间:2017-10-19 16:00:18

标签: xml python-2.7 python-requests elementtree

我正在尝试使用以XML格式返回数据的requests.get从geocoder.ca API收集一些地理编码。

在大多数情况下,我已经能够根据需要进行编码并转义某些字符(&),以便当我尝试将此数据导入元素时(使用xml模块中的ElementTree)它不会'抱怨

但对于一个特定的纬度/经度集,返回的地址包含少于符号(<),这会在尝试解析xml字符串时生成“格式不正确(无效的令牌)”错误。

查找实际地址,街道名称包含ë字符,无论出于何种原因,该字符被翻译为'A<<<<在回复内容中:

<geodata>

    <latt>45.644743</latt>
    <longt>-76.033414</longt>
    <city>La PAache</city>
    <prov>QC</prov>
    <postal>J0X2W0</postal>
    <stnumber>11</stnumber>
    <staddress>RaphaA<<l CH</staddress>

    <inlatt>45.6464</inlatt>
    <inlongt>-76.0352</inlongt>
    <distance>0.082</distance><NearRoad>Raphael CH</NearRoad>
    <NearRoadDistance>0.083</NearRoadDistance>

    <TimeZone>America/Toronto</TimeZone>     <AreaCode>819</AreaCode>

</geodata>

显然这是不正确的,我对任何其他重音角色没有任何问题,所以我不确定为什么这个特别是让我失望。

以下是我用于获取和解析从requests.get返回的XML数据的代码:

import requests
from xml.etree import ElementTree

url = "http://geocoder.ca"
xmlFile = open('xmlFile.xml', 'w')

latt = 45.6464
longt = -76.0352

params = {'latt': latt, 'longt' : longt, 'reverse': 1, 'geoit': 'XML'}
r = requests.get(url, params = params)

xmlFile.write(r.content)

tree = ElementTree.fromstring((r.content.replace('&', '&amp;')))

我可以尝试找到逃脱这两个角色的方法,但我仍然会有一个不再有意义的地址(我不想要)

如果有人对此有任何见解,我们将不胜感激。

0 个答案:

没有答案