
perlを使ってサイト上のhtmlを除去したいのですがその際、altやtitleなど属性の中にある文字列は除去せずにしたのです。
例えば下のようなimgタグがあります。
$str = '<img src="../images/example.png" alt="サンプル画像1" title="サンプル画像2" />テキスト';
これを正規表現をつかって除去し以下のようにテキストだけを取得したいのです。
サンプル画像1サンプル画像2テキスト
以下のような正規表現をつかって通常のhtmlタグは抜けるようになったのですが属性テキストを抜く方法がわかりません。
$str =~ s/<(".*?"|'.*?'|[^'"])*?>//g;
どなた様かご教授の程よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
s///eg でどうにかなりそうな気はするけど....
「『どうしたいのか』が完全な形で出てくるなら『どうすればいいのか』も完全な形で出せるかもしれない」としかいえないなぁ.
No.4
- 回答日時:
No.2 & No.3のお礼欄を拝見しました。
そういった用途であれば、ライブラリを使用したほうが良いかと思います。
例えば↓のHTML::TagParser
http://blog.ryoana.com/entry/2015/09/29/213915
上のサイトは一例ですが、「perl html 解析」「perl スクレイピング」などで検索すれば他にも説明しているサイトがあると思います。
No.3
- 回答日時:
こんな感じですか。
最初のカッコの中が$1に、二番目が$2に、三番目が$3に入ります。
my $str = '<img src="../images/example.png" alt="サンプル画像1" title="サンプル画像2" />テキスト';
$str =~ /<.*?alt="(.*?)".*?title="(.*?)".*?\/>(.*)/;
print "$1$2$3\n"; #→サンプル画像1サンプル画像2テキスト
ありがとうございます。
$str =~ /<.*?alt="(.*?)".*?title="(.*?)".*?\/>(.*)/;
print "$1$2$3\n"; #→サンプル画像1サンプル画像2テキスト
とした場合その<img>タグには有効かと思いますが、サイト上には<a>タグもあり<meta>タグもあります。
1ページ全部のソースからaltやtitleなどの属性、およびテキストを取得したいのです。
今回はわかりやすく省略して質問させていただいたのですがわかりづらく申し訳ございませんでした。
No.2
- 回答日時:
やりたいことはだいたいわかるんだけど, 表現が曖昧なのでプログラムにしにくい.
例えば, #1 への補足で
「altとかtitleとかの属性も含めたテキストをページから抜き出したい」
「srcの画像ファイル名とかは不要」
とあるんだけど, 「テキスト」と「画像ファイル名」とはどう区別すればいい? 腐ったサイトで
<img src="../images/example.png" alt="../images/example.png" title="サンプル画像2" />
なんてあったらどうするの?
あるいは, 「alt や title の値は残す」「src の値はファイル名だから全部捨てる」ということかもしれんが, もしそうだとしたら他の属性はどうすればいい?
ありがとうございます。
>「テキスト」と「画像ファイル名」とはどう区別すればいい?
ややこしくてすみません。
その区別はする必要はないです。とにかくaltとかtitleとかの中は残し、それ以外のタグは取り除きたいです。
>もしそうだとしたら他の属性はどうすればいい?
実を言うと<img>タグの場合はaltとかtitleになりますがその他にも抜き出したい属性はあります。
例えば、<meta name="Description" content="*****">などがあった場合、contentの部分も抜き出したいのです。
ちょっと省略してしまい申し訳ないです。
サイトのソースより日本語テキスト(もちろん英単語なんかも含めますが)を抜き出したいのです。
よろしくお願いいたします。
No.1
- 回答日時:
ちょっと質問.
結果が
サンプル画像1サンプル画像2テキスト
というのは, どういう理由でしょうか? 「altやtitleなど属性の中にある文字列は除去せずに」を正確に実行すると
../images/example.pngサンプル画像1サンプル画像2テキスト
とならなければおかしいのではありませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#!/usr/bin/perlで書きだしたCG...
-
perlプログラミング 空白行削除
-
perlをバージョンアップしたら...
-
Perl テーブル内の文字列取得 ...
-
perlで2次元配列をサブルーチ...
-
Blenderについて
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
ファイルアイコンの左下に緑の□...
-
ペプシコーラとコカ・コーラとD...
-
perl このテキストファイルを簡...
-
画像が表示でnull; this.src
-
Perl(Windows)の文法について
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
Perlのエラーについてご教授く...
-
INDIRECT 横に再度抽出したい
-
フローチャート 九九
-
perl の open について教えてく...
-
perlをバージョンアップしたら...
-
perlで2次元配列をサブルーチ...
-
perl 正規表現でエラー
-
bashスクリプト
-
perlでリテラル値はメモリにど...
-
perlについての質問
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perl このテキストファイルを簡...
-
Wallpaper Engineでおすすめの...
-
Perlで同じフォルダにある任意...
-
perlで複数のファイルの処理に...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
おすすめ情報
ご返信ありがとうございます。
目的としては、altとかtitleとかの属性も含めたテキストをページから抜き出したいのです。
なので、srcの画像ファイル名とかは不要なんですね。
よろしくお願いします。