因为项目需求需要查询一些网站的ALEXA排名,百度后得到的方法是,访问http://data.alexa.com/data?cli=10&dat=snbamz&url=%YOURURL%,可以得到如下的XML格式的数据:

<!--
Need more Alexa data? Find our APIs here: https://aws.amazon.com/alexa/
-->
<ALEXA VER="0.9" URL="sina.com/" HOME="0" AID="=" IDN="sina.com/">
<RLS PREFIX="http://" more="0">
<RL HREF="www.china.com/" TITLE="中华网科技公司"/>
<RL HREF="www.alibaba.com/" TITLE="Alibaba.com"/>
<RL HREF="www.yahoo.com/" TITLE="Yahoo!"/>
<RL HREF="www.yahoo.com.cn/" TITLE="雅虎中国 (yahoo.com.cn)"/>
<RL HREF="www.tyfo.com/" TITLE="天虎网"/>
<RL HREF="www.tom.com/" TITLE="Tom"/>
<RL HREF="www.sohu.com/" TITLE="搜狐首页"/>
<RL HREF="www.singtao.com/" TITLE="星島日報"/>
<RL HREF="www.sina.com.tw/" TITLE="台灣新浪網"/>
<RL HREF="www.sina.com.cn/" TITLE="新浪首页"/>
</RLS>
<SD TITLE="A" FLAGS="" HOST="sina.com">
<TITLE TEXT="sina1.com"/>
<OWNER NAME="Sina.Com Technology(china)co., Ltd"/>
</SD>
<SD>
<POPULARITY URL="sina.com/" TEXT="19624" SOURCE="panel"/>
<REACH RANK="16868"/>
<RANK DELTA="+6598"/>
<COUNTRY CODE="US" NAME="United States" RANK="5005"/>
</SD>
</ALEXA>

其中,<POPULARITY >标签的TEXT属性值正是网站的ALEXA排名。于是就需要在项目中利用xml解析工具提取TEXT属性值。

方法如下:

1.SAX (simple API for XML )

Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

2.DOM(Document Object Model)

将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。

3.ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

因为性能原因选用第三种方法,操作流程如下:

1.导入ElementTree

try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET

2.请求网址获取数据

        try:
data = requests.get(url)
if data.status_code == 200:
# Response格式中提取xml內容
xml_data = data.content
else:
raise Exception('request alexa rank failed!')

3.从xml数据变量构造ElementTree对象

root = ET.fromstring(xml_data)

4.利用xpath找到元素并提取属性

pop = root.findall('.SD/POPULARITY')
if pop:
print(pop[0].get('TEXT', None))

5.打完收工。

python之xml数据解析的更多相关文章

  1. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  2. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  3. 关于C#对Xml数据解析

    首先进行简单说明Xml 与Html  和 XAML数据标签的差别. 1.Xml属于数据文本, 被设计为传输和存储数据,其焦点是数据的内容.它与json格式数据相似,可作为服务数据传输类型. 其中XML ...

  4. xml数据解析调研

    XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...

  5. iOS开发——网络Swift篇&JSON与XML数据解析

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

  6. xml数据解析

    xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...

  7. iOS开发网络篇之Web Service和XML数据解析

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  8. 利用python将excel数据解析成json格式

    利用python将excel数据解析成json格式 转成json方便项目中用post请求推送数据自定义数据,也方便测试: import xlrdimport jsonimport requests d ...

  9. 二、Android XML数据解析

    XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...

随机推荐

  1. Vue完成页面切换中加载数据

    created() { // 拿到路由传递来的car主键 let pk = this.$route.query.pk || this.$route.params.pk; // 主键不存在,就直接结束方 ...

  2. Rendering in UE4(Gnomon School UE4 大师课笔记)

    Rendering in UE4 Presented at the Gnomon School of VFX in January 2018, part two of the class offers ...

  3. nginx配置项

    try_files location / { try_files $uri $uri/ /index.php?$query_string; } 当用户请求 http://host/instance时, ...

  4. 掌握 3 个搜索技巧,在 GitHub 上快速找到实用软件资源

    GitHub 作为目前广大程序猿最大的游乐场,在今年 6 月被 微软 以 75 亿美元价值的微软股票收购,GitHub 再次成为业界讨论的焦点.GitHub 以自由开放的定位吸引了相当多的个人开发者和 ...

  5. 爬虫之urllib库使用

    请求方法request import urllib.request url = "https://blog.csdn.net/fengxinlinux/article/details/772 ...

  6. 使用fui(Find Unused Imports)扫描工程中不用的类

    为了给APP提速,需要定期清理不用的类 fui(Find Unused Imports)是开源项目能很好的分析出不再使用的类,准确率非常高,唯一的问题是它处理不了动态库和静态库里提供的类,也处理不了C ...

  7. springMVC课程笔记(二)springMVC组件配置

    1.springMVC的DispatcherServlet前段控制器配置,如下图所示在web.xml中配置如下内容: 2.在spring配置文件中,配置处理器适配器HandlerAdapter和映射器 ...

  8. JsonObject处理时间转换问题

    正常传时间的时候使用JsonObject转换的时候会把整个日期都转换成一个新的对象,而如何转换成传统的yyyy-MM-dd HH:mm:ss类型呢 常用的时间格式 private String for ...

  9. Leetcode题目70.爬楼梯(动态规划+递归-简单)

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 ...

  10. django-admin 配置

    本节讲django-admin配置方法: 1.在工程配置文件中(settings.py)中启用admin组件.确保有如下两行配置: 2.执行数据库迁移的命令,确保对应的表在数据库中已经添加了 #pyt ...