奔牛网>代码>PHP编程>>使用Alexa API获取网站的Alexa排名的PHP代码
2017年05月25日

使用Alexa API获取网站的Alexa排名的PHP代码

Alexa虽然逐渐式微,用的人越来越少,但是它的排名还是具有一定的参考意义,我们可以用PHP代码来调用某个域名的ALEXA排名显示出来。
Alexa XML API 提供网站的Alexa相关的数据(XML格式的),再使用XML解析器来解析Alexa返回的XML,最终就能得到Alexa排名或其它的数据。

Alexa接口

Alexa的XML API接口是:http://data.alexa.com/data?cli=10&url=%YOUR_URL%

如果想获取更多的数据可以用:http://data.alexa.com/data?cli=10&dat=snbamz&url=%YOUR_URL%

用http://data.alexa.com/data?cli=10&dat=snbamz&url=bnxb.com返回的数据如下:
<?xml version="1.0" encoding="UTF-8"?>

<!-- Need more Alexa data?  Find our APIs here: https://aws.amazon.com/alexa/ -->
<ALEXA VER="0.9" URL="bnxb.com/" HOME="0" AID="=" IDN="bnxb.com/">
<RLS PREFIX="http://" more="0">
</RLS>
<SD TITLE="A" FLAGS="" HOST="bnxb.com">
</SD>
<SD><POPULARITY URL="bnxb.com/" TEXT="16470501" SOURCE="panel"/><REACH RANK="15348462"/><RANK DELTA="-2634619"/></SD></ALEXA>


其中POPULARITY元素中的TEXT属性的值16470501就是当前Alexa排名。REACH RANK="15348462"是下一期可能排名

代码实现:

用PHP实现通过Alexa API 获取Alexa排名的代码如下:

<php>
function getAlexaRank ($Domain){
     $line = "";
     $data = "";
     $URL = "http://data.alexa.com/data/?cli=10&dat=snba&url=". $Domain ;
     $fp = fopen ($URL ,"r");
     if ($fp ){
           while (!feof ($fp )){
                $line = fgets ($fp );
                $data .= $line ;
           }
           $p= xml_parser_create ();
           xml_parse_into_struct ($p , $data , $vals );
           xml_parser_free ($p );
           for ($i =0 ;$i <count ($vals );$i ++){
  if ($vals [$i ]["tag"]=="POPULARITY"){
      return  $vals [$i ]["attributes"]["TEXT"];
  }
    }
      }
}
?>

使用方法:
代码如下:

<?php
    echo getAlexaRank("bnxb.com");
?>



一个查询实例




<!DOCTYPE html><head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>ALEXA全球排名查询|奔牛网工具箱系列</title>

<style type="text/css" media="all">

html, body {margin: 0;padding: 0; }body {color: #333;font: 12px Tahoma,Lucida Grande, sans-serif;margin: 9%;}a {color: #0055CC; }img {border: 0px solid #CCC;}h1 {margin: 0;}h3 {color: #555;font-size: 1.6em;font-weight: normal;margin: 0; }pre {color: #0055CC;font-size: 1.1em;line-height: 1.2;margin: 0.25em 0; }p {margin: 0.65em 0;}#ads {border-left: 1px solid #eee;float: right;margin: 0 0 2em 2.5em;padding-left: 3px;width: 160px;}#source {margin-bottom: 2.5em; }pre {overflow: auto;padding:1em 0; }h2 {position: relative;top: 0.5em;}

</style>

</head>
<body>

<h3>Alexa全球排名检测</h3>
<form method="post" action="">
输入网址:<input type="text" name="url" size="48"/> <input type="submit" value="检测"/>

</form>
<?php

header("Content-type: text/html; charset=utf-8");

$domainurl = $_POST['url'];

if (!preg_match('/^http/', $domainurl)) {

    $domainurl = "http://" . $domainurl;

}

$tempu=parse_url($domainurl);

$message=$tempu['host'];

function getAlexaRank ($message){

     $line = "";

     $data = "";

     $URL = "http://data.alexa.com/data/?cli=10&dat=snba&url=". $message ;

     $fp = fopen ($URL ,"r");

     if ($fp ){

           while (!feof ($fp )){

                $line = fgets ($fp );

                $data .= $line ;

           }

           $p= xml_parser_create ();

           xml_parse_into_struct ($p , $data , $vals );

           xml_parser_free ($p );

           for ($i =0 ;$i <count ($vals );$i ++){

  if ($vals [$i ]["tag"]=="POPULARITY"){

      return  $vals [$i ]["attributes"]["TEXT"];
  }
    }
      }
}

echo '全球排名:'.getAlexaRank($message);


?>



      </body>
顶(0)
踩(0)
最新评论