とりあえずデータ取ってみっか.
テストを寝過ごしてだらだらしてたら夕方になったので, perlで書いた. 現在, dotファイル生成中.
なんだか知らないが, Googleさんからデータが取れんのでお気に入られは考慮せず.
メモ
Graphvizは digraph sample{a-b -> c;}だと間違うので, digraph sample{"a-b" -> c;}みたいな感じでやらないとダメ.
適当なソース
#Book.pl # 1. デフォルトのユーザ配列は俺. # 2. ユーザ配列を1から順に以下実行. # 2-1. id:aのお気に入りid:bを, Book.dotに書きだす. # "a" -> "b" # 2-2. id:bが, ユーザ配列に入ってなかったら突っ込む. # 10k人くらいだといいなぁ. use strict; use warnings; use HTML::TagParser; my $timeStart = localtime(time); print "Start: $timeStart\n"; open (FO, ">Book.dot") or die "Failed to open a file\n"; print FO "digraph Book{\n"; my $f = 0; my @ID = ('smoking186',); my %Hash = ('smoking186' => 1,); foreach my $user (@ID){ # print "*Searching ",$user,"\'s Favorite...\n"; #for debug # print "*",$user,"*\n"; #for debug my $html = HTML::TagParser->new( "http://b.hatena.ne.jp/$user/favorite" ); my $favoriteDIV = $html->getElementsByClassName( "favoritelist" ); if ($favoriteDIV){ my $text = $favoriteDIV->innerText; my @list = split(/\n/, $text); shift @list; #"sampleのお気に入り (0)"の削除. @list = grep (!/^$/,@list); #空白行の削除. foreach my $elem (@list){ #innerHTMLで取ったのでid前後の空白を削除. $elem =~ s/^\s//; $elem =~ s/\s$//; # print ":",$elem,":\n"; #for debug print FO "\"$user\" ->\"$elem\";\n"; if (!(exists($Hash{$elem}))){ push(@ID, $elem); $Hash{$elem} = 1; } } } } print FO "}\n"; close FO; my $timeEnd = localtime(time); print "Start: $timeStart\n"; print "End : $timeEnd\n";