Python - 解析XML或转换为JSON Alexa API数据

时间:2016-06-22 14:36:02

标签: python json xml

我在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而不是查询它。有谁知道我怎么做任何一个?

2 个答案:

答案 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'