トップページ⇒tech
30コメント5KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
文字コードの関係もあって失敗ばかりして困ってます。

HTML、XML文
↓
タグ除去
↓
プレーンテキスト

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

前に作った拙いプログラム張りますからちょっと待ってください。
0007デフォルトの名無しさんNGNG
初心者なら何でもして良いと?
0008デフォルトの名無しさんNGNG
s/<[^>]*>//g;
00091NGNG
これだとタグが完全に取れないのですが・・・

while ($_ = <STDIN>) {
$_ =~ s/<[^>]*>//g;
print $_;
}
0010デフォルトの名無しさんNGNG
s/<[^>]*>/g
0011デフォルトの名無しさんNGNG
warata
0012デフォルトの名無しさんNGNG
なあ、ブラウザで、すべて選択してコピーすればタグ取れるぜ。
やってみろよ。
0013デフォルトの名無しさんNGNG
電
 波
  を
   受
    信
     し
      ま
       す
        た
0014デフォルトの名無しさんNGNG
うんこ
0015デフォルトの名無しさんNGNG
int c;
while((c=getchar()) != EOF)
if(c == '<') while((c=getchar()) != '>');
else putchar(c);
0016デフォルトの名無しさんNGNG
 ≪
 ≫
 ≪
 ≫
(゜ρ゜)
強い電波が出ています
0017デフォルトの名無しさんNGNG
Perl に関する質問は以下のスレにどうぞ。

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

つうか、きちんと動作するプログラム作りたいんだったら、
正規表現をLexerプログラムに翻訳しなおして、
微妙な境界条件や、エラー・リカバリをきちんと書くのが正道
0023デフォルトの名無しさんNGNG
つーか、HTML::Parser 使おう。
0024デフォルトの名無しさんNGNG
お前なんであげんの?
0025デフォルトの名無しさんNGNG
>>23 中身はExpadかな
0026デフォルトの名無しさんNGNG
# $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メモからのコピペ。よって
#
#  〜 糸冬 了 〜
0027デフォルトの名無しさんNGNG
つーか、HTML::Parser 使おう。
0028デフォルトの名無しさんNGNG
>>25 expatの間違いだよな?
ちなみにHTML::Parserはw3cのlibwwwのパーサ(C)をベースに改良したものだ。
0029デフォルトの名無しさんNGNG
テキスト文
ストリング文字列
キャラクター文字
サウンド音
イメージ画像
0030ファックNGNG
perlfaq 読まない >>1 に死を!
■ このスレッドは過去ログ倉庫に格納されています