由于项目需要,研究了一下Alexa的API以及如果通过C#程序来获取对应域名的Alexa排名。
首先,找到Alexa提供的查询API接口:http://data.alexa.com/data?cli=10&dat=snbamz&url=baidu.com,这里的baidu.com就是你要查询的域名。其返回结果是XML格式的,结果如下:
<?xml version="1.0" encoding="UTF-8"?> <ALEXA VER="0.9" URL="baidu.com/" HOME="0" AID="=" IDN="baidu.com/"> <RLS PREFIX="http://" more="82"> <RL HREF="21cn.com/" TITLE="21cn.com"/> <RL HREF="163.com/" TITLE="网易"/> <RL HREF="taobao.com/" TITLE="淘宝网"/> <RL HREF="sohu.com/" TITLE="搜狐首页"/> <RL HREF="sina.com.cn/" TITLE="新浪首页"/> <RL HREF="qq.com/" TITLE="QQ.COM"/> <RL HREF="people.com.cn/" TITLE="人民网"/> <RL HREF="www.3721.com/" TITLE="网络实名"/> <RL HREF="search.21cn.com/" TITLE="21cn_com - 搜索引擎"/> <RL HREF="e.pku.edu.cn/" TITLE="天网中英文搜索"/> </RLS> <SD TITLE="A" FLAGS="DMOZ" HOST="baidu.com"> <TITLE TEXT="Baidu.com"/> <ADDR STREET="The Ideal International Bldg, 12th floor" CITY="Beijing 100080, " STATE="Beijing" ZIP="" COUNTRY="" /> <CREATED DATE="11-Oct-1999" DAY="11" MONTH="10" YEAR="1999"/> <PHONE NUMBER="+86 1082607100"/> <OWNER NAME="2009 Baidu "/> <EMAIL ADDR="baidu_dns_master@baidu.com"/> <ALEXAPRO TIER="intro"/> <LANG LEX="zh-CN"/> <LINKSIN NUM="199722"/> <SPEED TEXT="1488" PCT="55"/> <REVIEWS AVG="4.0" NUM="98"/> <CHILD SRATING="0"/> </SD> <KEYWORDS> <KEYWORD VAL="Chinese Simplified"/> </KEYWORDS><DMOZ> <SITE BASE="baidu.com/" TITLE="Baidu.com" DESC="The leading Chinese language search engine, provides &quot;simple and reliable&quot; search experience, strong in Chinese language and multi-media content including MP3 music and movies, the first to offer WAP and PDA-based mobile search in China."> <CATS> <CAT ID="Top/World/Chinese_Simplified_CN/计算机/互联网络/搜寻/搜索引擎" TITLE="搜寻/搜索引擎" CID="254859"/> </CATS> </SITE> </DMOZ> <SD> <POPULARITY URL="baidu.com/" TEXT="5" SOURCE="panel"/> <REACH RANK="6"/> <RANK DELTA="+0"/> <COUNTRY CODE="CN" NAME="China" RANK="1"/> </SD> </ALEXA>有了这个XML文件,在C#中用Linq来解析获取对应的属性,值还是比较方便的。具体提取的实现方法如下:
//引入Linq的命名空间 using System.Xml.Linq; public static int GetAlexaRank(string domain) { var alexaRank = 0; try { var url = string.Format("http://data.alexa.com/data?cli=10&dat=snbamz&url={0}", domain); var doc = XDocument.Load(url); var rank = doc.Descendants("POPULARITY") .Select(node => node.Attribute("TEXT").Value) .FirstOrDefault(); if (!int.TryParse(rank, out alexaRank)) alexaRank = -1; } catch (Exception e) { return -1; } return alexaRank; }通过这个XML文件,你可以提取任何你想要的关于Alexa的属性和值。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册