Hatena::Groupperlmemo

Perlメモ

2008年09月18日 より開始
最新5件(RSS 2.0)
古いモジュールの更新

Plagger(Fedora10)
Plagger(Ubuntu9.04)

CPAN::Mini

Remedie(Ubuntu 9.04、Vine4.9(5α)、Fedora11Preview)
Remedie(Fedora10) 見れたサイトまとめ
編集

2008-09-30

はてなアンテナのコンピュータカテゴリに登録されているURLを取得

| はてなアンテナのコンピュータカテゴリに登録されているURLを取得 - Perlメモ を含むブックマーク はてなブックマーク - はてなアンテナのコンピュータカテゴリに登録されているURLを取得 - Perlメモ はてなアンテナのコンピュータカテゴリに登録されているURLを取得 - Perlメモ のブックマークコメント

はてなアンテナ - コンピュータ

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;


#my $category = '&c=a';  my $category_maxcount = 14000;
#my $category = '&c=b';  my $category_maxcount = 2400;
#my $category = '&c=c';  my $category_maxcount = 12800;
#my $category = '&c=d';  my $category_maxcount = 4600;
#my $category = '&c=e';  my $category_maxcount = 2600;  #7min
#my $category = '&c=f';  my $category_maxcount = 3000;
#my $category = '&c=g';  my $category_maxcount = 1400;  #5min
#my $category = '&c=h';  my $category_maxcount = 25200;
my $category = '&c=i';  my $category_maxcount = 200;  #1min
#my $category = '&c=j';  my $category_maxcount = 2000;  #5min
#my $category = '&c=m';  my $category_maxcount = 1400; #4min
#my $category = '&c=p';  my $category_maxcount = 1000;  #5min
#my $category = '&c=r';  my $category_maxcount = 200;  #1min
#my $category = '&c=s';  my $category_maxcount = 1200; #3min
#my $category = '&c=t';  my $category_maxcount = 4600;
#my $category = '&c=y';  my $category_maxcount = 18600;
#my $category = '';  my $category_maxcount = 19800;  #nocategory
#$category_maxcount = 200;

my $urlcount = 0;  my $sitecount = 0;  my $over200 = 0;

print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print '<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">' . "\n";
print "<title>hatena antenna</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";

#open(OUT,">out.txt");

(my $sec, my $min, my $hour, my $mday, my $mon, my $year, my $wday, my $yday, my $isdst) = localtime();
print $hour . " 時" . $min . "分 " . $sec . "秒\n";

for(my $page=0; $page <= $category_maxcount; $page+=200)
{
	my $url = 'http://a.hatena.ne.jp/category?of=' . $page  . $category;
	my @data = split(/\n/, get($url));  #改行で分解して @dataへいれる

	my $flg = 0;	my $flg2 = 0;	my $count = 0;

	foreach (@data)         # ループ
	{
		if($flg==0) {  # ol start より前の行
			if(/<ol start="/) {  #<ol start="201">など
				$flg = 1;
			}
		}
		else {
			if(/<a href=/) {
			        m/<a href="(.+)">/i;  #<a href=" と ">の間を取得
				my $username = $1;
				#s/\s+//g;  # スペースを除去

				if($flg2==0)  { # アンテナページのデータを取得
					my $url_simple = 'http://a.hatena.ne.jp/' . $username . '/simple' ;
					my @data2 = split(/\n/, get($url_simple));  #改行で分解して @data2へいれる

					$count++;
					foreach(@data2) {        # ループ
						if($flg2==0)  {
							if(/<ol start="1">/) {
								$flg2 = 1;
							}
						}
						else {
							if(/<a href=/) { #登録されているURLを取得
								#s/^.{63}//g;  #先頭から半角63文字除去
								#s/">.*>//g;  # "> より後ろを除去(target_blank が無い場合)
								m/go\?(.+?)"/i;  # go? と " の間を取得 .+? なので最小マッチ
								my $temp = $1;
								$temp =~ s/\d{14}$//g;  #末尾からdigit14文字除去 http://blog.livedoor.jp/kawase_oh/20081006072204 \d {14}
								print $temp  . "\n";  #アンテナに登録してあるアドレス
								$urlcount++;
							}
							elsif(/<\/ol>/) {  # </ol> 以降はいらない
								$flg2 = 0;
							}
						}
					}
					$flg2 = 0;  #0の時:2つめ以降のアンテナも処理
				}
			}
			elsif(m/\((.+)\)/i) {  # ( と ) の間を取得
			    if($1 > 200)  {
				print "over=" . ($1 - 200) . "\n";
				$over200 += ($1 - 200);
			    }
			    $sitecount += $1;
			}
		}
	}
}

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();
print $hour . " 時" . $min . "分 " . $sec . "秒\n";
print "url count=   " . $urlcount . "\n";
print "site count()=" . $sitecount . "\n";
print "over200=     " . $over200 . "\n";
print "             " . $sitecount - $urlcount . "\n";

print "</body>\n";
print "</html>\n";

はてなアンテナ - コンピュータ で、300人以上から登録されているページ

STDIN

STDIN - Perlメモ を含むブックマーク はてなブックマーク - STDIN - Perlメモ STDIN - Perlメモ のブックマークコメント

my @lines = <STDIN>;


$ perl count.pl < sorted.txt

sort

sort - Perlメモ を含むブックマーク はてなブックマーク - sort - Perlメモ sort - Perlメモ のブックマークコメント

$ sort < abc.txt > sorted.txt