PerlでHTML文からテキスト文を抽出する法

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
文字コードの関係もあって失敗ばかりして困ってます。

HTML、XML文

タグ除去

プレーンテキスト

みたいなプログラムありませんか? どうかおながいします。
単発質問に見えるが。
間違いなく単発質問だ。
回線切って首<以下略/>
</commnet>
6デフォルトの名無しさん:02/05/22 22:32
すみません、まだ駆け出しの初心者なんで、、、

前に作った拙いプログラム張りますからちょっと待ってください。
初心者なら何でもして良いと?
s/<[^>]*>//g;
91:02/05/22 22:34
これだとタグが完全に取れないのですが・・・

while ($_ = <STDIN>) {
$_ =~ s/<[^>]*>//g;
print $_;
}
s/<[^>]*>/g
warata
なあ、ブラウザで、すべて選択してコピーすればタグ取れるぜ。
やってみろよ。

 波
  を
   受
    信
     し
      ま
       す
        た
うんこ
int c;
while((c=getchar()) != EOF)
if(c == '<') while((c=getchar()) != '>');
else putchar(c);
 ≪
 ≫
 ≪
 ≫
(゜ρ゜)
強い電波が出ています
Perl に関する質問は以下のスレにどうぞ。

Perlは結構使えるっぽいけどどうよ?
http://pc.2ch.net/test/read.cgi/tech/991994996/
Perlについての質問箱
http://pc.2ch.net/test/read.cgi/tech/1017736187/
天地爆裂
電波炸裂
なぜ上げる?
>>19
ごめんなさい。
>>19
ここ数日板の攪拌をしてる人がいるみたい。
すぐ落ちるし気にしなくていいんでない。
22デフォルトの名無しさん:02/07/03 02:01
>>9 は複数行に跨ったタグを除去できない、ってだけの話だね。

つうか、きちんと動作するプログラム作りたいんだったら、
正規表現をLexerプログラムに翻訳しなおして、
微妙な境界条件や、エラー・リカバリをきちんと書くのが正道
つーか、HTML::Parser 使おう。
お前なんであげんの?
>>23 中身はExpadかな
# $str の中のタグを削除した $result を作る
# $tag_regex と $tag_regex_ は別途参照

$text_regex = q{[^<]*};

$result = '';
while ($str =~ /($text_regex)($tag_regex)?/gso) {
last if $1 eq '' and $2 eq '';
$result .= $1;
$tag_tmp = $2;
if ($tag_tmp =~ /^<(XMP|PLAINTEXT|SCRIPT)(?![0-9A-Za-z])/i) {
$str =~ /(.*?)(?:<\/$1(?![0-9A-Za-z])$tag_regex_|$)/gsi;
($text_tmp = $1) =~ s/</</g;
$text_tmp =~ s/>/>/g;
$result .= $text_tmp;
}
}

# Perlメモからのコピペ。よって
#
#  〜 糸冬 了 〜
27デフォルトの名無しさん:02/09/21 13:13
つーか、HTML::Parser 使おう。
>>25 expatの間違いだよな?
ちなみにHTML::Parserはw3cのlibwwwのパーサ(C)をベースに改良したものだ。
テキスト文
ストリング文字列
キャラクター文字
サウンド音
イメージ画像
30ファック
perlfaq 読まない >>1 に死を!