無題

アクセスログ眺めてみました。
User-Agentが
先行者
狙いすぎです。あなた(笑)

掴みはこのくらいにしておいてと…。

彼の糸井重里氏のウェブサイトほぼ日刊イトイ新聞で連載されている「もしもしQよQさんよ」というとても好きな記事があります、私はコレをいつでも読めればいいなあと常々思っておりました。本にもなっているので買えばいいという考えもあったんですが新しい記事に対応できないという自己中心的な理由からPDAで持ち運べるようにしてしまえ計画発動。

というわけでその為のPerlスクリプトなり。いわゆるヘッドラインセンサみたいなモノですわ。動作環境としてはrequire 5.6.1ということにしておきましょうかね…。
あ、あとこれは私の場合の家庭内LANのProxyを考慮したモノなのでそのまま動かせる人っていないかも(笑)
適宜ソケット生成の部分とGET命令の発行箇所を修正してくださいね。
#なんでそこまで作り込まないのかというと、「私の所では動いてるしこれで充分」だから。

実行する際にコマンドラインで取得したい西暦、取得したい最初の月、取得したい最後の月をわたしてください。
おっと、わすれてた。スクリプトの文字コードはShift_JISで。
マッチングにそのまま2バイト漢字使っちゃってるし(笑)

#! /usr/bin/perl

#ほぼ日刊イトイ新聞もしもしQさんQさんよ
#ごっそりゲットスクリプト^^;

use IO::Socket::INET;

($getyear, $start_month, $end_month) = @ARGV;

print $getyear, $start_month, $end_month;
@days = qw(0 31 28 31 30 31 30 31 31 30 31 30 31);
for $month( $start_month .. $end_month){
  for $i(1..$days[$month]){
    $socket = IO::Socket::INET->new(PeerAddr =>’192.168.0.1′, PeerPort => ‘8080′ , PeerProto => ‘tcp’ );

    $month = sprintf “%02d”, $month;
    $filename = $getyear.”_”.$month.”QQ.TXT”;

    open( OUT, “>>$filename”) or die;
    $mday = sprintf “%02d-%02d”, $month, $i;

    print $socket “GET http://www.1101.com/Q/$getyear-$mday.htmlrn”;

    while( < $socket> ){
        chomp;
      if( m/第/ ){
        $_ =~ s/< [^>]*>//g;
        $_ =~ s/ //g;
        print OUT $_, “rn”;
        last;
      }
    }
    while( < $socket> ){
      chomp;
      m/< /TD>/ and last;
      $_ =~ s/< [^>]*>//g;
      $_ =~ s/ //g;
      print OUT $_, “rn”;
    }
    print OUT “nn”;
    close(OUT);
    $socket->close();
  }
}

Leave a Reply