RSS自動解析で分かる集合知まとめサイト2.0(3/4 ページ)

» 2007年12月11日 07時30分 公開
[大澤文孝,ITmedia]
リスト1■LWPモジュールを使ってコンテンツを取得するgetWebContent関数

use encoding 'utf8', 
  STDIN=>'utf8', STDOUT=>'utf8';
use LWP::UserAgent;
use HTTP::Date;
use Encode::Guess;
use Encode;
sub getWebContent($$)
{
  my ($url, $modified) = @_;
  # ユーザーエージェントを作る
  my $ua = new LWP::UserAgent;
  # ユーザーエージェント文字列を設定する
  $ua->agent('my robot');
  # 時間が指定されているなら、その時間より更新されている場合だけ取得する
  if ($modified)
  {
    $ua->default_header('If-Modified-Since', 
      time2str($modified));
  }
  # 接続して結果を得る
  my $response = $ua->get($url);
  if ($response->code == 304)
  {
    # 最終更新日以降に更新されていない
    return (undef, $modified);
  }
  if (!$response->is_success)
  {
    die "接続エラー" . $response->status_line;
  }
  # 最終更新日を得る
  my $lastmodified = str2time(
    $response->header('Last-Modified'));
  my $content = $response->content;
  # コンテンツはUTF-8に変換しておくことにする
  Encode::Guess->set_suspects(
    qw/shiftjis euc-jp 7bit-jis/);
  $content = Encode::decode("Guess", $content);
  return ($content, $lastmodified);
}

 次ページから上記、リスト1の内容について解説していこう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ