いつもお世話になっています。
ブログのHTMLから本文を抽出したいと思っています。
ヤプログを例にとると、ヤプログのHTMLは以下のようになっています。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
…
<!-- entry -->
…
<td class="entry_title">
<h3>タイトル<span class="date">2005年10月29日(土)</span></h3>
…
<td class="entry_text">
…
<div class="entry_layer"><div style="text-align: center;">
<img src="/cafe_life/img/25/cafe67.jpg" border="0">
</div>
<br>
今日はとてもいい天気だったので、<br>
渋谷に買い物に行きました。<br>
…
<br>
新しいiMacが欲しいなぁ~<br>
<br>
</div>
…
<!-- entry -->
…
</html>
そこで、本文を抽出するのに、
<td class="entry_text"> から<!-- entry -->までをHTMLから抽出し、
さらにそれに対してタグを除去するようにしてブログの本文の
「今日はとてもいい天気だったので、
渋谷に買い物に行きました。
…
新しいiMacが欲しいなぁ~」
を抽出させたいと思っています。
このようにするにはプログラムをどのように作成すればよいでしょうか?
よろしくお願いします。
No.1
- 回答日時:
回答ではないのですが、
私知っているヤプログのサイトは、そのような構成になっていませんでした。
??
申し訳ありません。
私の確認不足でした。
確認したところ、はっきりとは言えないのですが、
ヤプログもリニューアル前と後のブログでは、
HTMLの構造が変わっているようです。
質問で記述したのは、私のヤプログのブログの記事のHTMLを参照して書いたのですが、
ヤプログのトップhttp://www.yaplog.jp/
で紹介しているPRIDEレフェリー島田さんのブログや、
高橋千佳子さんのブログなど比較的新しいブログのHTMLでは、
<div class="entry">からブログのエントリーの記述が始まり、
<div class="txt">からブログの本文の記述が始まり、
<!-- FeedMe -->までがブログのエントリーという記述になっていました。
ただ、私のブログや知り合いのブログなど比較的古くから始めているブログは質問のようなHTMLの構造になっていました。
もしよろしければ、上記のどちらかに対応してブログの本文を抽出する方法を教えていただけますか?
よろしくお願いします。
No.2
- 回答日時:
Socket or HttpConnectionでHTTP通信すればHTMLのソースは取得できます。
あとは、HTMLのタグを取り除く&改行を追加する、で
できますよね?
それとも文字列操作ができないんでしょうか?
ご回答ありがとうございます。
指定した範囲だけのHTMLのソースを抜き出して、
それに対してタグを取り除くということはできるのでしょうか?
また、どのようにプログラムを組めばいいのでしょうか?
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
HTMLはXMLと違って必ず開始タグ+終タグの関係になっていないので、
ちょっと面倒くさいですが、本文がどこ(どのタグ)から始まり
どこで終わりかが分かっていればString#indexOf、String#substringで
目的の文字列(タグつき本文)が取得できます。
次に余計なタグ(div)を削除し、改行タグ(br)を改行コード(\r\n)に
変換すれば読める文字列になるかと思うのですが。
(もしかしたら文字コードの変換が必要になるかもしれませんが)
変換はString#replaceかString#replaceAllを使ってください。jdkのバージョンによっては後者は使えませんが。
参考URL:http://java.sun.com/j2se/1.4.2/docs/api/index.html
No.4
- 回答日時:
正規表現でパターンマッチングすれば不可能ではないでしょう。
どんなコードを書けばいいかは、ご自身でもう少しお考えになりとりあえず叩き台を出して頂かないと、有益なアドバイスも出てこないのではないでしょうか?掲示板はボタンを押しさえすれば無料でソースコードを吐き出してくれる自動販売機ではありません。
しかし、HTML文書に含まれるデータを処理するってのは、私の印象ではパターンマッチングとしてはかなり上級の課題のような気がします(要素と属性の間に改行とか入ってたらどうすんだとか、属性値が"で囲まれていない場合はどうすんだとか、欲しいテキストの一部が<b>とかで囲まれてたらどうすんだとか。。。)。
おそらく一般的・半永久的に使えるパターンを作るには、HTMLのDTDを精読する必要があるでしょう。
それに、コメント行をあてにしてマッチングするというのも何か気が進まないですねえ。他に方法は無いんでしょうか?
xsltが使えるXHTMLの場合なら少しはやる気がしますが。。。
ご回答ありがとうございます。
確かにこちらを頼りすぎて、私自身に勉強不足・努力不足のところがありました。
今後は、試行錯誤の上、どうしても分からないときのみ、
こちらを利用したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
\\n \\r \\t について
-
連続した<span>の改行
-
html上で改行するとスペースが...
-
「:」について
-
長いURLを途中で改行(折り返す...
-
高校1年生情報の問題について。
-
Labelでは1行しか書けない
-
文字の最後に半角空白が勝手に...
-
改行が変な位置、中途半端な位...
-
<h1></h1>のタイトルの行に画像...
-
preタグがプロの現場であまり使...
-
mailtoで本文指定に改行をしたい
-
<a href="長いURL"> を途中で...
-
テーブルの中にスペースを入れたい
-
カーソルを合わせると説明を表...
-
テーブルの幅を固定するとnowra...
-
なぜか<p> </p>が挿入され...
-
テーブルのセルデータを自動改...
-
均等な空白部分をつくるには?
-
改行したときの幅を狭くする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルのセルデータを自動改...
-
テキストエリア内の改行禁止
-
長いURLを途中で改行(折り返す...
-
H1タグに改行の<br>を使う
-
\\n \\r \\t について
-
テーブルの幅を固定するとnowra...
-
テーブル内の文字列を改行させたい
-
<TD><input type="text"></TD>...
-
「:」について
-
PCの画面を縮小したらサイズ...
-
preタグがプロの現場であまり使...
-
改行できる・できない入力ボッ...
-
Windowsのformでtextareaに入力...
-
文字の最後に半角空白が勝手に...
-
XMLの改行方法とリンクの仕方
-
テキストエリア内の改行もその...
-
<br />タグの、brの後の半角ス...
-
htmlで文字列をクリップボード...
-
Hタグを改行禁止にしてspanのよ...
-
VBE でスペースと改行を見える...
おすすめ情報