1、获取alexa排名数据
pagehandler = urllib.urlopen('http://data.alexa.com/data?cli=10&dat=snbamz&url=sina.com')
data = pagehandler.read()
2、获取信息为:
<!--
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="5553" SOURCE="panel"/>
<REACH RANK="6223"/>
<RANK DELTA="+401"/>
<COUNTRY CODE="CN" NAME="China" RANK="427"/>
</SD>
</ALEXA>
3、使用xml.dom.minidom解析XML字符串
import xml.dom.minidom
xml_data = xml.dom.minidom.parseString(data)
root=xml_data.documentElement
rank = 0
country = ''
sd_data=root.getElementsByTagName('SD')
if len(sd_data)<2:
return rank,country
for node in sd_data:
rank_node = node.getElementsByTagName('POPULARITY')
if rank_node:#判断是否存在属性可以使用hasAttribute函数,但判断是否存在属性我没有找到帖子说对应的函数
rank = int(rank_node[0].getAttribute('TEXT'))
country_node = node.getElementsByTagName('COUNTRY')
if country_node:
country = country_node[0].getAttribute('CODE')
4、另外还有一些可能会用到的函数
# 节点名称
print root.nodeName
# 节点类型:'ELEMENT_NODE':1,元素节点; 'TEXT_NODE',文本节点; 'ATTRIBUTE_NODE',属性节点
print root.nodeType
# 获取某个节点下所有子节点,是个列表
print root.childNodes
# 获取某个元素节点的文本内容,先获取子文本节点,然后通过“data”属性获取文本内容
name=root.getElementsByTagName('name')[0]
name_text_node=name.childNodes[0]
print(name_text_node.data)
参考帖子:
1、Python minidom模块(DOM写入和解析XML)
https://www.cnblogs.com/wcwnina/p/7222180.html
2、http://www.runoob.com/python/python-xml.html
3、通过官方 API 获取网站 Alexa 排名,https://www.qiansw.com/get-Alexa-Rank.html