我在xml中有一些数据通过alexa传入。它看起来像这样:
<!--
Need more Alexa data? Find our APIs here: https://aws.amazon.com/alexa/
-->
<ALEXA VER="0.9" URL="yahoo.com/" HOME="0" AID="=" IDN="yahoo.com/">
<SD>
<POPULARITY URL="yahoo.com/" TEXT="5" SOURCE="panel"/>
<REACH RANK="5"/>
<RANK DELTA="+0"/>
<COUNTRY CODE="US" NAME="United States" RANK="5"/>
</SD>
</ALEXA>
以下是指向它的链接:http://data.alexa.com/data?cli=10&url=https://www.yahoo.com/
我想要抓住&#34; REACH RANK&#34;通过解析数字,或将数据转换为JSON而不是查询它。有谁知道我怎么做任何一个?
答案 0 :(得分:1)
因此,没有一对一的映射工具可以自动将您的xml转换为JSON。最好的办法是使用Python的内置功能(如https://docs.python.org/2/library/xml.html)解析XML,或者尝试使用LXML。总是存在良好的正式表达路径,最后你可以使用像BeautifulSoup这样的库来帮助解析你的XML。
就将其转换为JSON而言,您需要将数据构建到Python字典中并使用json库。
import json
my_data = json.loads(dict_data)
答案 1 :(得分:1)
如果您想要的是 REACH 标签中的 RANK 属性,您可以使用内置xml.etree,这只是找到REACH的问题使用.get
标记和提取属性:
In [19]: x = """<ALEXA VER="0.9" URL="yahoo.com/" HOME="0" AID="=" IDN="yahoo.com/">
....: <SD>
....: <POPULARITY URL="yahoo.com/" TEXT="5" SOURCE="panel"/>
....: <REACH RANK="5"/>
....: <RANK DELTA="+0"/>
....: <COUNTRY CODE="US" NAME="United States" RANK="5"/>
....: </SD>
....: </ALEXA>"""
In [20]: from xml.etree import ElementTree as et
In [21]: tree = et.fromstring(x)
In [22]: rank = tree.find(".//REACH").get("RANK")
In [23]: rank
Out[23]: '5'