Yahooブックマークのブックマーク件数取得するスクリプト
スポンサードリンク
livedoor クリップ クリップ件数取得 API
や
はてなブックマーク件数取得APIとは - はてなダイアリー
のように、プログラムからYahooブックマークのブックマーク件数を取得したいというミッション。
Yahooブックマークのhttp://num.bookmarks.yahoo.co.jp/ybmno.phpをrefererに対象URLをセットしてgetすると、
HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, max-age=0 Connection: close Date: Tue, 18 Mar 2008 13:04:15 GMT Content-Type: text/xml Client-Date: Tue, 18 Mar 2008 13:04:11 GMT Client-Peer: 124.83.151.228:80 Client-Response-Num: 1 Client-Transfer-Encoding: chunked P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Set-Cookie: B=xxxxxxxxxxxxx&b=x&s=xx; expires=Tue, 02-Jun-2037 20:00:00 GMT; path=/; domain=.yahoo.co.jp document.write('<a href="http://bookmarks.yahoo.co.jp/url?url=http%3A%2F%2Fblog.dtpwiki.jp%2Fdtp%2F">18') <!-- bm-num04.ssearch.ogk.yahoo.co.jp uncompressed/chunked Tue Mar 18 22:04:15 JST 2008 -->
のような断片が出てきますので、これから数字をパクります。
Filename: get_yahoobookmarks.pl
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; my $url = 'http://blog.dtpwiki.jp/dtp/'; my $count = get_sbm_yahoo( $url ); printf("%d\t%s\n", $count, $url); exit; sub get_sbm_yahoo { my $url = shift; my $ua = LWP::UserAgent->new(); $ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'); my $req = HTTP::Request->new( 'GET', 'http://num.bookmarks.yahoo.co.jp/ybmno.php', ); $req->referer( $url ); my $res = $ua->request($req); my $content = $res->content; my $count = 0; if ( $content =~ m|document.write\('<.+?">(\d+)| ) { $count = $1; } return $count; } __END__
後は、これにキャッシュ機構とかつけると完成です!
これは、MacIEだと、http://num.bookmarks.yahoo.co.jp/ybmno.phpから出てくるやつがうまく利用できないくさかったので作る羽目になりました。
(2008-03-20 17.27追記)
Yahoo!ブックマークのブックマーク数を取得するAPI - blog.katsuma.tv [blog.katsuma.tv]
SBMで被ブックマーク数を取得するときに、Y!ブックマークだけscriptタグでimg取得による方法しか見つからなかったのですが、どうにかテキストで取得できないかな、と考えてYahooツールバーのHTTPヘッダを見てたらなんとか分かりました。RESTなAPIがどうやら存在していた模様。こんな風に取得できます。
http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=調べたいURL
XMLで返ってくるとのこと。こっちの方がrefererむりくりセットしなくてもいいし、かっこいいよね。パースするの面倒だけど正規表現でいいよね。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2411
コメントする