HTML::TreeBuilderによるパース(タグとテキストを全表示)

ここでは、取得したHTTPメッセージのbody部分に含まれるHTMLを解析してタグ名とテキスト情報を抽出する方法を説明します。

HTTPクライアントサンプル

以下にHTTP::LiteとHTTP::TreeBuilderを利用したクライアントを示します。

まず、<BODY>タグをfindによって取得しています。 次に、取得したBODYタグに含まれるタグとテキスト情報を再帰的に抽出しています。


#!/usr/bin/perl

use HTTP::Lite;
use HTML::TreeBuilder;

$http = new HTTP::Lite;

# URL部分を変更して下さい
$req = $http->request("http://www.hogehogeURL.com/") || die $!;

$body = $http->body();

$tree = HTML::TreeBuilder->new;
$tree->parse($body);
$tree->eof();

# <BODY>タグを表現するHTML::Elementを取得
$body_tag = $tree->find('body');
print_element($body_tag);

exit;


# タグとテキストを再帰的に表示
sub print_element()
{
  local $e = @_[0];
  local @elements = $e->content_list();

  if ($#elements < 0) {
    # childが一つも無ければ終了
    return;
  }

  local $i;

  # 各Elementを表示
  for ($i = 0; $i <= $#elements; $i++) {

    # HTML::Elementならばタグ情報を表示
    if (ref $elements[$i] eq "HTML::Element") {
      print "TAG : " . $elements[$i]->tag . "\n";
      print_element($elements[$i]);

    } else {

      # 文字列として表示

      print "TEXT :\n";
      print $elements[$i];
      print "\n";
    }
  }
}



あきみち

「インターネットのカタチ - もろさが織り成す粘り強い世界 -」関連資料

インターネットのカタチ もろさが織り成す粘り強い世界

Linuxネットワークプログラミング

Perlネットワークプログラミング

カスタム検索


アルファブロガー・アワード2011受賞ブログ


外部サイト

プレコ王国
ディスカス魂
金魚タイムズ
YouTubeチャネル
Twitter
Facebook
mixi(ほぼ未使用)

フィードメーター - Geekなぺーじ
Copyright (C) Geekなページ.
All rights reserved. 無断転載や無断コピーなど、私的利用の範囲を逸脱した利用はおやめ下さい.