HTML ドキュメントのセグメントを Java String として受け取り、その内部テキストを抽出したいと考えています。例:こんにちは世界 ----> こんにちは世界
Java 標準ライブラリを使用してテキストを抽出する方法はありますか? 空の文字列を使用した開閉タグの正規表現よりも効率的なものはありますか? ありがとう、
HTML ドキュメントのセグメントを Java String として受け取り、その内部テキストを抽出したいと考えています。例:こんにちは世界 ----> こんにちは世界
Java 標準ライブラリを使用してテキストを抽出する方法はありますか? 空の文字列を使用した開閉タグの正規表現よりも効率的なものはありますか? ありがとう、
HTML の解析に正規表現を使用しないでください。HtmlCleanerのような専用のパーサーを使用してください。
正規表現の使用は、通常、最初のテストで機能しますが、適応が不可能になるまで、ますます複雑になります。
HTML の解析に正規表現を使用しないでください。たとえばjsoup: Java HTML Parserを使用してください。DOM から要素を選択する便利な方法があります。
例 ウィキペディアのホームページを取得し、それを DOM に解析して、ニュース セクションの見出しを要素のリストに選択します。
Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); Elements newsHeadlines = doc.select("#mp-itn b a");
JDK には HTML パーサーjavax.swing.text.html.parser.Parserもあり、次のように適用できます。
Reader in = new InputStreamReader(new URL(webpageURL).openConnection().getInputStream());
ParserDelegator parserDelegator = new ParserDelegator();
parserDelegator.parse(in, harvester, true);
次に、探している種類 (開始タグ、終了タグ、属性など) に応じて、適切なコールバック関数を定義します。
@Override
public void handleStartTag(HTML.Tag tag,
MutableAttributeSet mutableAttributeSet, int pos) {
// parses the HTML document until a <a> or <area> tag is found
if (tag == HTML.Tag.A || tag == HTML.Tag.AREA) {
// reading the href attribute of the tag
String address = (String) mutableAttributeSet
.getAttribute(Attribute.HREF);
/* ... */
私も言います-HTMLで正規表現を使用しないでください。;-)
JTidyで試してみることができます。
HTMLParserを使用できます。これはオープン ソースです。