Perl:Webページのデータ取得

 リンク集を作るのに、タイトルの入力など簡単にならないかと考え、プログラムでWebサイトのデータを取得しタイトル部分だけ抽出すればよさそうだと思い調べてみた。


 ※プログラム初心者のため、このページのプログラムソースは正常に動作しない事がありますご注意下さい。


・Webデータの取得
 $urlに任意のアドレスを書き込むと、$htmlにその内容が入ります。

use LWP::UserAgent;
my($url) = "http://www.yahoo.co.jp/";
my($user_agent) = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) ";
my($ua) = LWP::UserAgent->new('agent' => $user_agent);
my($res) = $ua->get($url);
my($html) = $res->content;

・文字コードの自動判定&変換
 $htmlに判定したい文字列を入れると、成功すれば$htmlにUTF8になった文字列が格納されます。完璧な自動判定では無いので判定出来なければ変換せずそのままです。
 文字コードが分かってるなら、from_to($html, 文字コード, ‘utf8’);で変換した方が早いし確実。

use Encode qw/ from_to /;
use Encode::Guess qw/euc-jp shiftjis cp932 iso-2022-jp 7bit-jis/;
my($enc) = guess_encoding($html);
my($from) = $enc->name;
if(ref($enc)){
   from_to($html, $from , 'utf8');
}

・タイトルの取得
 普通に取り出します。

my($title);
if ($html =~ m/<title>(.*?)</title>/s){$title=$1}

こんな感じ?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA