0

HTML ドキュメントのセグメントを Java String として受け取り、その内部テキストを抽出したいと考えています。例:こんにちは世界 ----> こんにちは世界

Java 標準ライブラリを使用してテキストを抽出する方法はありますか? 空の文字列を使用した開閉タグの正規表現よりも効率的なものはありますか? ありがとう、

4

4 に答える 4

2

HTML の解析に正規表現を使用しないでください。HtmlCleanerのような専用のパーサーを使用してください。

正規表現の使用は、通常、最初のテストで機能しますが、適応が不可能になるまで、ますます複雑になります。

于 2012-07-12T07:38:51.647 に答える
2

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);

    /* ... */
于 2012-07-12T07:39:41.733 に答える
2

私も言います-HTMLで正規表現を使用しないでください。;-)

JTidyで試してみることができます。

于 2012-07-12T07:40:28.073 に答える
1

HTMLParserを使用できます。これはオープン ソースです。

于 2012-07-12T07:48:41.440 に答える