今日の1日振り返ります。

ジャンルは不特定多数で、主にメモ書きですね。

perl HTML::TreeBuilder の使い方等の覚え書き

はじめに

 perl のモジュールの1つに HTML::TreeBulider というものがあります。これは何かというとHTML形式で書かれたファイルから class や id を探してその中身を抜き出して出力してくれるモジュールです。私が認識してるのはそんなところ。詳しくは以下参照ください。上手くいかなかった所や解決策について記述してます。

参照元
HTML::TableExtract - search.cpan.org

ちょいマシなCPAN機械翻訳〜HTML::TreeBuilder

スポンサーリンク



基本的な使い方?

 基本的な使い方なのかどうかわかりませんが、HTML、perlと出力結果 を載せます。

  • HTML(ファイル名:11.html)


  • perl(ファイル名:url200.pl)


  • 出力結果

$ ./url200.pl
AAAAAAAAAA
CCCVSDDD
EEEVSFFF
GGGVSHHH

参考にしたのは以下2つのサイト。ベースは1つ目のものを参考にしました。

  1. perlでHTMLを解析して欲しい情報を抽出するためのコードをメモ
  2. 簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト · DQNEO起業日記

上手く行かなかったところ、解決策

 前節に参考にしたページを載せてますが、基本的に1つめの参照元を参考にしてました。ほぼコピペでやってました。そうすると、HTMLソースの12行から21行の部分の抜き出しができず、 「CCCVSDDD」 のみとなってしまうのです。少なくとも class 名が異なればどうにかなったのですが。

  • 出力結果

$ ./url200.pl
AAAAAAAAAA
CCCVSDDD

その時の perl ソースは

いろいろ調べたのですが、なかなか良策にありつけず、そこで 20行目の

-> as_text

の部分を削除してみたのです。すると

HTML::Element=HASH(.......)HTML::Element=HASH(............)HTML::Element=HASH(...........)

こんな感じで、3つ同じようなものがでてきました。ということは、以下2つのことがなんとなく分かってきました。

  1. as_text によって文字にしている。
  2. $Bの中には3つ文字列が入ってる。

そしたら、$Bのスカラー変数をリストにしたらいいじゃん!ってことで、$Bを@Bに変えてやってみましたけど、なんかエラー出てる…。そこで、参考となったのが2つ目の参照元です。ここでは、print するときに as_text を入れていて、同じように真似をしてみたら上手くいきました。

結局

のところを

としました。

以上


スポンサーリンク