天天看點

[轉]如何擷取Alexa排名資料

上回說到Alexa的排名資料來源于Alexa工具條,是以排名資料并不十分準确,特别是對于中文網站來說,國内裝Alexa工具條的多是被某些網站“誤導”的使用者以及一些網站站長,是以很多人也對Alexa資料不以為然。在目前情況下,Alexa的排名還是和Google PR一樣被廣告商們看重的資料和作為衡量網站廣告投放價值的依據。

這裡講講如何擷取Alexa的資料排名。最簡單的莫過于裝上Alexa提供的工具條了,Alexa提供了Firefox和IE的版本,但純粹為了看一個網站的排名而安裝這個插件顯得有點浪費資源。我在Firefox浏覽器用的是SearchStatus這個插件,這個插件同時顯示了Google PR和Alexa排名,占用位置也不大,用起來比較友善。

本文着重要講的是如何使用從Alexa的伺服器下載下傳資料,并進行分析後應用于WP插件或提供給訪客(如 http://alexa.chinaz.com/這樣的服務)。Alexa官方提供了收費的API接口,每千次查詢$0.15(上回憑印象說是$0.1,更正一下),既然要收費,肯定沒有多少人願意花這錢了,特别在我們中國人看來更是難以了解,照理說用你Alexa的資料應該是相當給你面子,給你人氣,你還要向我收費?還好早就有人破解了Alexa工具條(貌似很多國内網站強迫要求下載下傳的Alexa工具條還經過改裝,擁有木馬功能了),并把它的伺服器接口盜取出來分享給大家了。

接口一:

http://data.alexa.com/data/+wQ411en8000lA?cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&wid=12206&act=00000000000&ss=1680×1050&bw=964&t=0&ttl=35371&vis=1&rq=4&url=http://www.baidu.com

接口二:

http://data.alexa.com/data/TCaX/0+qO000fV?cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&wid=31472&act=00000000000&ss=1024×768&bw=639&t=0&ttl=4907&vis=1&rq=23&url=http://www.baidu.com

接口三:

http://data.alexa.com/data/ezdy01DOo100QI?cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&wid=16865&act=00000000000&ss=1024×768&bw=775&t=0&ttl=1125&vis=1&rq=2&url=http://www.baidu.com

接口四:

http://data.alexa.com/data/+wQ411en8000lA?cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&wid=12206&act=00000000000&ss=1680×1050&bw=964&t=0&ttl=35371&vis=1&rq=4&url=http://www.baidu.com

事實上,分析一下這些位址可以看到它已經将使用者的浏覽器資訊,系統資訊等發送給了服務端。

ezdy01DOo100QI是aid。

“cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&”這部分是固定值。

wid是個随機數。

act資料包含了Alexa Toobar功能的被使用情況。

ss很明顯是螢幕分辨率了。

bw是IE視窗的寬度。

t取值是0或1,和目前IE的window對象還有referrer有關。

ttl是目前頁面打開速度,和Site Stats中的Speed有關。

vis表明IE是否顯示工具條。

rq是對象計數器。

有了這些接口,我們就可以提供Alexa排名查詢的服務了。

通路任意上述位址任意一個,查詢baidu.com的資訊,傳回XML檔案如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ALEXA VER="0.9" URL="baidu.com/" HOME="0" AID="=">
  3. <RLS PREFIX="http://" more="315">
  4. <RL HREF="www.3721.com/" TITLE="3 7 2 1"/>
  5. <RL HREF="search.21cn.com/" TITLE="21CN"/>
  6. <RL HREF="itsearch.ccidnet.com/" TITLE="itsearch.ccidnet.com/"/>
  7. <RL HREF="e.pku.edu.cn/" TITLE="e.pku.edu.cn/"/>
  8. <RL HREF="21cn.com/" TITLE="21cn.Com -"/>
  9. <RL HREF="163.com/" TITLE="163.com/"/>
  10. <RL HREF="search.163.com/" TITLE="search.163.com/"/>
  11. <RL HREF="dir.sohu.com/" TITLE="dir.sohu.com/"/>
  12. <RL HREF="cn.search.yahoo.com/" TITLE="cn.search.yahoo.com/"/>
  13. <RL HREF="yahoo.com/" TITLE="Yahoo!"/>
  14. </RLS>
  15. <SD TITLE="A" FLAGS="DMOZ">
  16. <TITLE TEXT="Baidu.com"/>
  17. <ADDR STREET="The Ideal International Bldg, 12th floor" CITY="Beijing 100080, " STATE="" ZIP="" COUNTRY="CHINA" />
  18. <CREATED DATE="11-Oct-1999" DAY="11" MONTH="10" YEAR="1999"/>
  19. <PHONE NUMBER="+86 1082607100"/>
  20. <OWNER NAME="Baidu.com, sillyser"/>
  21. <EMAIL ADDR="[email protected]"/>
  22. <LANG LEX="zh-CN"/>
  23. <LINKSIN NUM="58665"/>
  24. <SPEED TEXT="1062" PCT="82"/>
  25. <POPULARITY URL="baidu.com/" TEXT="11"/>
  26. <RANK DELTA="-2"/>
  27. <CHILD SRATING="0"/>
  28. <REACH RANK="13"/>
  29. </SD>
  30. <KEYWORDS>
  31. <KEYWORD VAL="Chinese Simplified"/>
  32. </KEYWORDS><DMOZ>
  33. <SITE BASE="baidu.com/" TITLE="Baidu.com" DESC="The leading Chinese language search engine, provides “simple and reliableâ€? 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.">
  34. <CATS>
  35. <CAT ID="Top/World/Chinese_Simplified/計算機/網際網路絡/搜尋/搜尋引擎" TITLE="搜尋/搜尋引擎" CID="1005774"/>
  36. </CATS>
  37. </SITE>
  38. </DMOZ>
  39. </ALEXA>

開頭包括了一些反向連結的網站,中間是網站排名等資訊,下面是網站介紹,網站管理者可以向Alexa添加這些資訊。如果是比較不知名的小站,如我的http://photozero.net 資訊就沒有那麼全了。

在前面的文章裡提到了,調用Neekey API services的Alexa rank顯示圖檔還會提升Alexa排名,實際上指的就是在調用Alexa資料時,我們是模拟Alexa工具條進行查詢的,是以你的部落格的Alexa排名自然就提升上去了,不信您試試?我在Firefox裡裝上SearchStatus插件後,每天通路自己的部落格一會兒,眼睜睜看着Alexa排名從300W排名開外沖到目前的110W。

PHP中擷取檔案排名的方法

  1. $content = file_get_contents('$alexaURL'); //自行将URL放入,如果伺服器的file函數沒有開啟ALLOW_URL_OPEN 選項(如Dreamhost),應該用 fsockopen 等函數替代。
  2. $pattern = '/<POPULARITY URL="\s*(.+?)" TEXT="\s*(.+?)"\/>/'; //在XML中比對的 <populartity />項裡面的資料就是Alexa排名了
  3. preg_match($pattern, $content, $match); //進行比對搜尋
  4. echo $match[2]; //$match[2] 就是排名了。
  5. //如果需要其他資訊就自己寫個比對模式,從裡面提取出來就行了。當然用PHP提供的XML處理函數也是可以的。

除了在服務端調用進行輸出外,做個AJAX調用的查詢程式也不錯,還節省了伺服器資源。下次抽空做個放出來。

原文:http://photozero.net/get_alexa_ranking/