【问题标题】:Python - Parse XML or conver to JSON Alexa API DataPython - 解析 XML 或转换为 JSON Alexa API 数据
【发布时间】:2016-06-22 14:36:02
【问题描述】:

我有一些通过 Alexa 传入的 xml 数据。它看起来像这样:

<!--
 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/

我想通过解析来获取“REACH RANK”数字,或者将数据转换为 JSON 并查询它。有谁知道我该怎么做?

【问题讨论】:

    标签: python json xml


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      如果你想要的只是 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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2015-07-28
        • 1970-01-01
        • 2012-10-15
        • 2015-06-30
        • 1970-01-01
        相关资源
        最近更新 更多