使用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。