Perlでクローラーっぽいもの

/ Perl / Comment[0]
a hrefタグをひたすら追いかけるっていうとりあえず動くクローラーっぽいものを書いてみた
#!/usr/bin/perl
use LWP;

($initurl, $keyword) = @ARGV;
if(!@ARGV) { print "Usage: $0 URL [keyword]\n"; }

&spidering("$initurl");

$cnt = 1;
my %clicked;
sub spidering {
my $url = shift;
my $w = LWP::UserAgent->new;
$w->timeout(3);
my $req = HTTP::Request->new(GET => "$url");
my $html = $w->request($req)->content;
my @links = $html =~
m{<a.*?href="(http://[^"]+(?:/|\.htm|\.html|[0-9]))(?=.*$keyword)"}gi;
foreach my $link (@links) {
if(!defined($clicked{$link})) {
              if($cnt eq '30'){
print "\nDone.\n"
exit;
}
$cnt++;
print "$cnt\t$link\n";
$clicked{$link} = 1;
&spidering($link);
}
}
}

キーワードを指定せずに実行するとケビンベーコン理論でカオスに
$ ./tracespider.pl http://uedakana.com
1	http://blog-edge.com/uedakana/
2 http://www.uedakana.com/
3 http://www.uedakana.com/profile.htm
4 http://www.uedakana.com/magazine.htm
5 http://www.uedakana.com/album.htm
6 http://www.a19.jp/
7 http://twihkd.jp/
8 http://a19.jp/
9 http://www.a19.jp/ipad/
10 http://www.hokkaido-style.com/
11 http://twitter.com/
12 http://www.kita-hotel.com/
13 http://package.travel.rakuten.co.jp/front/app/s/rtf000/check_gfs110?noTomariHotel=9603&fDptab=1
14 http://travel.rakuten.co.jp/
15 http://travel.rakuten.co.jp/ski/
16 http://ad2.trafficgate.net/t/r/1367/1441/99636_99636/
17 http://rd.rakuten.co.jp/cow/?R2=http%3A%2F%2Fwww.rakuten.co.jp%2F&D2=161.3809.29000.0.7182714
18 http://card.rakuten.co.jp/
19 http://rd.rakuten.co.jp/cow/?R2=http%3A%2F%2Fwww.rakuten.co.jp%2F&D2=161.3809.29000.0.7182717
20 http://ad2.trafficgate.net/t/r/5125/1441/99636_99636/
21 http://rd.rakuten.co.jp/cow/?R2=http%3A%2F%2Fwww.rakuten.co.jp%2Fcgi-bin%2FRRS%3FMIval%3Dbasket&D2=161.3809.29000.0.7182718
22 http://www.rakuten.co.jp/
23 http://ad2.trafficgate.net/t/r/1852/3629/198512_234039/
24 http://toolbar.rakuten.co.jp/
25 http://pointmail.rakuten.co.jp/
26 http://www.infoseek.co.jp/
27 http://top.www.infoseek.co.jp/Forward?sv=119&rd=http%3a%2f%2frd%2erakuten%2eco%2ejp%2fgo%2f%3fR2%3dhttp%3a%2f%2frecipe%2erakuten%2eco%2ejp%2f%26D2%3d1941.0.7191375.0.10849829.2
28 http://recipe.rakuten.co.jp/
29 http://recipe.rakuten.co.jp/sp1/autopost/top/?scid=top_headererea_banner3
30 http://recipe.rakuten.co.jp/search/%E3%81%8A%E3%81%A7%E3%82%93/?s=0&v=1&t=1

Done.


キーワードに「アニメ」を指定してアニメ関連のHPを列挙
$ ./spider.pl http://www.vid-dl.net アニメ
1	http://cinemavideo.blog74.fc2.com/
2 http://kimamaniyoutube.blog78.fc2.com/
3 http://miyazooo.blog114.fc2.com/
4 http://dougasyoukai.blog26.fc2.com/
5 http://youtubetvdoramadouga.blog111.fc2.com/
6 http://freedynamicimage.blog74.fc2.com/
7 http://anipo.jp/
8 http://r.mag-u.jp/i-anime/season/
9 http://r.mag-u.jp/c/talk/6177
10 http://animescoop.aki.gs/
11 http://freeanimedougadesu.blog70.fc2.com/
12 http://youtubeanisoku1.blog106.fc2.com/
13 http://tvanimedouga.blog93.fc2.com/
14 http://anime.dougasouko.com/
15 http://fc2-seo-ranking.com/%E3%82%A2%E3%83%8B%E3%83%A1/
16 http://thailand2.blog84.fc2.com/
17 http://myfavoritenote.blog137.fc2.com/
18 http://animetore.blog84.fc2.com/
19 http://blogranking.fc2.com/in.php?id=449002
20 http://blog.with2.net/link.php?900630
21 http://animetore.blog84.fc2.com/blog-entry-5002.html
22 http://www.nicovideo.jp/watch/sm14756726
23 http://dic.nicovideo.jp/a/%E3%82%A2%E3%83%8B%E3%83%A1
24 http://www.nicovideo.jp/search/%E3%82%A2%E3%83%8B%E3%83%A1
25 http://rd.nicovideo.jp/cc/search/timeshift?cc_live_id=lv73571971
26 http://rd.nicovideo.jp/cc/search/timeshift?cc_live_id=lv71186735
27 http://ch.nicovideo.jp/channel/ch312
28 http://b.hatena.ne.jp/entry/http://ch.nicovideo.jp/channel/ch312
29 http://dic.nicovideo.jp/a/%E3%82%A2%E3%83%8B%E3%83%A1%E7%95%AA%E7%B5%84%E3%81%A7%E6%94%BE%E6%98%A0%E3%81%97%E3%81%A6%E3%81%9Fcm%E9%9B%86
30 http://www.nicovideo.jp/search/%E3%82%A2%E3%83%8B%E3%83%A1%E7%95%AA%E7%B5%84%E3%81%A7%E6%94%BE%E6%98%A0%E3%81%97%E3%81%A6%E3%81%9FCM%E9%9B%86

Done.
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可