プロが教える店舗&オフィスのセキュリティ対策術

こんばんわ~ときどきこちら様でお世話になってます

タグ(Java ScriptやHTML中のCSS等きわめて複雑なものも含む)を完全に削除してウェブサイトの文字だけを抜き出したいんですけど自分にはハードルが高すぎたみたいです^^;

http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag
いろいろ調べているうちにこちらのサイト様を発見し、

$none_tag =~ s/$tag_regex//;
とやってみましたがなぜかタグが残ってしまいます。

とあるサイトの【文字】だけを抜き出せれば良いのでタイトルに正規表現と記載しましたがその他の方法でも構いませんのでよろしくお願いしますm(_ _)m

A 回答 (4件)

参考URLのページは参考になりませんかね。


全テキストの例は出てませんが。

参考URL:http://okwave.jp/kotaeru.php3?q=1911815

この回答への補足

ご回答ありがとうございます

やりたいことは同じなんですけど後でソースコードをみたときに
どんな処理をしてるかわかりやすそうなのですみませんが正規表現で問題を解決したいです

補足日時:2006/02/07 19:48
    • good
    • 0

> その他の方法でも構いませんので・・・



http://www.vector.co.jp/soft/win95/net/se065646. …
など如何でしょうか。

参考URL:http://www.vector.co.jp/soft/win95/net/se065646. …

この回答への補足

すみませんが方法は正規表現のみでお願いします

http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag
のようにHTMLの正規表現を変数に代入して

$none_tag =~ s/$tag_regex//ig;

のようにしたいです

また↑のページではなんで複雑なタグを削除できないんでしょうか?
ページに複雑なJavaScriptがあったりするとうまく削除できなくてJavaScriptの一部が残ってしまいます

わがままばかり言ってしまいましたが再度よろしくお願いします

補足日時:2006/02/07 19:42
    • good
    • 0

こんなんどうでしょう。



use Win32::OLE qw(EVENTS);

my $URL = "http://www.yahoo.co.jp";
my $IE = Win32::OLE->new("InternetExplorer.Application")
|| die "Could not start Internet Explorer.Application\n";
Win32::OLE->WithEvents($IE,\&Event,"DWebBrowserEvents2");

$IE->{visible} = 0;
$IE->Navigate($URL);
Win32::OLE->MessageLoop();

sub Event {
my ($Obj,$Event,@Args) = @_;
if ($Event eq "DocumentComplete") {
$IEObject = shift @Args;
my $innerText = $IEObject->Document->Body->InnerText;
print $innerText;
Win32::OLE->QuitMessageLoop();
}
}
    • good
    • 0

gオプション付けましょう。



$none_tag =~ s/$tag_regex//g;

gオプションは「マッチするもの全てを見つける」ためのオプションです。
ということは、これがないと1回でも見つかったらそれで終わりということになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!