SNSに関係ありそうなサイトのトラフィック
PHPというものを触ってみる需要がようやく正月に発生した。ちょうど任意ドメインのAlexaランキングを自動取得するという課題が練習によさげだったので書いてみた。サーバーで動作確認してGoogle Page Creatorにあげてみたけど動かない。PHPなどのサーバーサイドスクリプトやデータベースをサポートしてないという話も。ただしJavaScriptは別。時代はJavaScriptに移行しつつあるということか。この方ものたまわく
「はじめてのWebプログラミング」でしょ?
それならもう答えははっきりしている。PerlでもRubyでもPythonでもましてやPHPでもない。
JavaScript、だ。
残しといてもしかたないけど捨てるのも時間分惜しいのでdump。
やること
例えばGREEのAlexaランキングで7,042位と書いてあるのをこのままどこかにコピペしても7,04282みたいなおかしな数字が出る。これはHTMLソースで
7<span class="c33e">,0</span>4<span class="c1ae">28</span>2</span>
のように数字を隠したり出したりするという細工をしてあるからで、どうせcssかなんか読み込んでるんだろうと踏んでみると
.c11e { display: none } .c125 { display: none } .c12d { display: none } .c130 { display: none }
あった。これに載ってるclassをもってるspanの数字はダミー。
コード(ベタ貼り)
<?php ###alexa.comのランキングを整理 ###written by satzz,2007/01/04 ###元凶のcssを読みに行く ###このcssを隠してない意図が読めないが... $css_cont=file('http://client.alexa.com/common/css/scramble.css'); $classlist=array(); foreach($css_cont as $line){ preg_match('/\.(c.*) .*/',$line,$hit); array_push($classlist,$hit[1]); } ###ランキングを知りたいドメインのリストを読み込んで1つずつ処理 $rank_list=array(); foreach(file('trgtlist.txt') as $line){ $target=chop($line); $rank_list[$target]=get_ranking($target,$classlist); } ###ランキングでソートして表示 asort($rank_list); foreach($rank_list as $target => $ranking ) { echo("|".$target."|".$ranking."|\n"); } ###alexaの吐いたHTMLソースからランキングを取得 ###simplexml_load_fileが使えなかったので正規表現でゴリゴリ砕いてるだけです function get_ranking($target,$classlist){ $source=file_get_contents('http://www.alexa.com/data/details/traffic_details/'.$target); preg_match('/rank of:.*?-->(.*?)<\/span><!-- google_ad/',$source,$hit_list); $hit=$hit_list[1]; while(strpos($hit,'span')){ preg_match('/(.*?)<span class=\"(c.+?)\">(.+?)<\/span>(.*)/',$hit,$temp); array_shift($temp); $strres.=array_shift($temp); $class =array_shift($temp); $str =array_shift($temp); $hit =array_shift($temp); if(!in_array($class,$classlist)) { $strres.=$str; } } $strres.=$hit; ###カンマが邪魔なので除去 return str_replace(',','',$strres); } ?>
出力(見にくかったのでExcelで勝手に加工しました)
yahoo.com | 1 | piczo.com | 337 | soundpedia.com | 7234 |
live.com | 3 | match.com | 446 | friendsreunited.com | 7339 |
myspace.com | 6 | flixster.com | 541 | downelink.com | 7408 |
facebook.com | 7 | irc-galleria.net | 547 | livemocha.com | 11514 |
hi5.com | 8 | imvu.com | 620 | ryze.com | 13578 |
orkut.com | 10 | wayn.com | 822 | gather.com | 14468 |
friendster.com | 14 | cyworld.com | 929 | librarything.com | 17049 |
fotolog.com | 16 | fotki.com | 964 | xuqa.com | 17740 |
skyrock.com | 21 | blackplanet.com | 1153 | profileheaven.com | 20343 |
flickr.com | 34 | vampirefreaks.com | 1302 | eons.com | 23548 |
livejournal.com | 57 | myyearbook.com | 1424 | aimpages.com | 23582 |
netlog.com | 69 | meetup.com | 1634 | sconex.com | 28996 |
iwiw.hu | 87 | classmates.com | 1711 | passado.com | 30961 |
badoo.com | 89 | vox.com | 1811 | tagworld.com | 53335 |
xanga.com | 98 | sulekha.com | 1940 | takingitglobal.org | 59421 |
mixi.jp | 103 | faceparty.com | 2012 | blurty.com | 70744 |
bebo.com | 105 | cardomain.com | 2751 | iknow.co.jp | 71724 |
multiply.com | 110 | plaxo.com | 2788 | bolt.com | 72399 |
rediff.com | 124 | nexopia.com | 3354 | gopetslive.com | 91620 |
tagged.com | 155 | mobango.com | 4124 | mygamma.com | 112565 |
imeem.com | 157 | 43things.com | 4240 | dodgeball.com | 179393 |
livedoor.com | 162 | reunion.com | 5003 | lang-8.com | 422262 |
studivz.net | 184 | greatestjournal.com | 5058 | listography.com | 426739 |
linkedin.com | 196 | care2.com | 5165 | jogabonito.com | 1067026 |
hyves.nl | 203 | migente.com | 5290 | thestudentwiki.org | 5540875 |
draugiem.lv | 270 | neurona.com | 5293 | ||
stumbleupon.com | 294 | tribe.net | 5471 | ||
last.fm | 299 | ecademy.com | 6373 | ||
gaiaonline.com | 309 | lunarstorm.se | 6424 | ||
grono.net | 324 | gree.jp | 7042 |
trgtlist.txtには
facebook.com myspace.com orkut.com ...
のようにドメインを列記。
リストのソースは
http://www.socialnetworking.jp/archives/2006/09/post_521.html 世界のSNS
http://en.wikipedia.org/wiki/List_of_social_networking_websites Wikipedia
yahoo.comは1位に来てるけどこれはYahoo!360のランキングではない。
多分他にもそういうサイトがありそう。21位のskyrock.comもポータルだし。
もっと本格的にやるとして参考になりそうなものはこちら。
http://sho.tdiary.net/20051120.html#p02 Alexa Web Information Service (AWIS)を使ってみようとしてほぼ挫折中
http://oss.timedia.co.jp/show/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%90%91%E4%B8%8A%E7%A7%98%E4%BC%9D/Alexa%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95
Alexaのサービスの正しい利用方法
[misc]空想科学研究所からの年賀状
今年も来た。
中学くらいのときにファンレターを出したら、毎年送ってくるようになった。
周りにも結構読みふけってる人は多く「中高生の教養」みたいなブームになってたけど、自分は最近読んでないなぁ。
それだけ。
[misc]冬休み
既に1年の1/3を休みにとれる学生は冬休みなんてあってもなくても別にいいや、と思ってたけど、1週間ほど家にこもって何かやるってだけでもそれなりに収穫があったのでやっぱり冬休みに感謝。おかげでかなり目を傷めた気がするけど。
[misc]2008年の目標追加
- 資産管理の徹底
- Google Spreadsheetsで。海外に行く前はちゃんとつけてたけど、カナダドルやらUSドルやらロシアルーブルやら言ってる間に何がどうなってるのかわからなくなって結局やめた。Spreadsheetsも以前に比べてだいぶ操作性上がったし。
[hatena diary]はてダのsectioncategoryモジュールがうまく動いてない
せっかくエントリにカテゴリ付けしたのにサイドバーのカテゴリーに表示されてない。
どこをいじったらいいのか誰か教えてください。
[scheduling][GooSync][W-Zero3]GooSync復活
なんかGooSync復活してた。サポートチーム、「直してやったよ」とか何とか連絡よこせばいいのに。もしかしたらGoogle Calendarの問題かも。Google Calendar結構不安定だし(特に反復の予定をゴチャゴチャ編集したとき)。
デバイスはAdvancedにそのうち変えるかも。W-Zero3にしてから「携帯を携帯しない」人間になってしまった(まぁ些事に惑わされないという意味ではいい)。AdvancedはキーボードとWindows Mobileを残したままかなり小さくなってるみたい。それでPDFとかパワポとか見るのかなり辛そうだけど、何にしても携帯と名乗る以上は小さい方がいいや(おい)。