使用PHP下载Alexa数据
众所周知,Alexa提供的有关访客人数的数据远非准确的,但是可以从Alexa获取XML提要,该XML提要允许您找出Alexa提供的所有数据,而不仅仅是访客数字。将正确的参数传递给此Feed,您可以找到相关的链接,联系方式和域信息,Alexa排名,关联的关键字和Dmoz列表。
作为示例,这里是一个提要URL,用于获取有关bbc.co.uk页面的信息。
http://xml.alexa.com/data?cli=10&dat=nsa&ver=quirk-searchstatus&uid=19700101000000&userip=127.0.0.1&url=www.bbc.co.uk
因此,要获取有关任何站点的信息,您只需将正确的URL传递到该地址即可。
要使用PHP以可用的形式获取此信息,可以使用curl函数。要将Alexa提要下载到PHP,请使用以下代码:
$url = 'www.bbc.co.uk'; $querystring = 'http://xml.alexa.com/data?cli=10&dat=nsa&ver=quirk-searchstatus&uid=19700101000000&userip=127.0.0.1&url='.urlencode($url); $ch = curl_init(); $user_agent = "Mozilla/4.0"; curl_setopt ($ch, CURLOPT_URL, $querystring); curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt ($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_TIMEOUT, 120); $alexaXml = curl_exec($ch); curl_close($ch);
现在,您有了一个名为alexaXml的变量,其中包含所需的所有信息。您可以在PHP中使用某些XML解析选项,但是一种更简单的方法是使用正则表达式提取所需的信息。这里有一些例子。
获得Alexa的人气。
preg_match('/\/Ui',$alexaXml,$match);
echo "Popularity: ";
if(count($match)>0){
echo $match[2];
}else{
echo 0;
}
echo '
'; 获取Alexa链接。
preg_match('/LINKSIN NUM="(.*?)"/Ui',$alexaXml,$match);
echo "Links: ";
if(count($match)>0){
echo $match[1];
}else{
echo 0;
}
echo '
';获取Dmoz类别。
preg_match_all('/CAT\sID="(.*)"/U',$alexaXml,$match);
echo "Dmoz cats: ";
if(count($match[1])){
echo '
'.print_r($match[1],true).'
';
}else{
echo 0;
}
echo '';您还可以通过打印出几个链接来直接查看数据。
echo 'Links'; echo '
'; echo 'Data';
有更多可用信息。要查看您可以提取的所有内容,只需将顶部的URL复制到浏览器窗口中,然后直接查看输出。我建议在Firefox中执行此操作,因为它可以很好地显示XML。