C#通过Alexa的API获取对应域名的Alexa Rank(Alexa排名)的方法

C#开发 2014-09-02 23596阅读 0评论 0收藏 收藏本文
alexa 由于项目需要,研究了一下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 &amp;quot;simple and reliable&amp;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的属性和值。

转载请注明:图享网 » C#通过Alexa的API获取对应域名的Alexa Rank(Alexa排名)的方法

文章评论

获取验证码