1

ここでの以前の質問に加えて、ステータスコードと HTML をフィルター処理するために基本的な Web クローラーを拡張する、次の方法で HTML タグ (この場合は「タイトル」) から情報を抽出しようとしています。

public static void parsePage() throws IOException, BadLocationException 
{
    HTMLEditorKit kit = new HTMLEditorKit();
    HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
    doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
    Reader HTMLReader = new InputStreamReader(testURL.openConnection()
            .getInputStream());
    kit.read(HTMLReader, doc, 0);

    // Create an iterator for all HTML tags.
    ElementIterator it = new ElementIterator(doc);
    Element elem;

    while ((elem = it.next()) != null) 
    {
        if (elem.getName().equals("title")) 
        {
            System.out.println("found title tag");
        }
    }
}

これは、タグが見つかったと私に伝える限り機能しています。私が苦労しているのは、それらの後に/中に含まれる情報を抽出する方法です。

サイトでこの質問を見つけました: Help with Java Swing HTML parsing、ただし、整形式の HTML でのみ機能すると述べています。別の方法があることを願っていました。

任意のポインタをいただければ幸いです。

4

2 に答える 2

3

ジョッドを使ってみる

Jerry jerry = jerry().enableHtmlMode().parse(html);
...

またはHtmlParser

Parser parser = new Parser(htmlInput);
CssSelectorNodeFilter cssFilter = new CssSelectorNodeFilter("title");
NodeList nodes = parser.parse(cssFilter);
于 2012-07-14T21:24:02.447 に答える
1

メソッドをこれに変更すると、望ましい結果が得られることがわかります。

    {
            HTMLEditorKit kit = new HTMLEditorKit();
            HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
            doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
            Reader HTMLReader = new InputStreamReader(testURL.openConnection().getInputStream());
            kit.read(HTMLReader, doc, 0);
            String title = (String) doc.getProperty(Document.TitleProperty);
            System.out.println(title);
    }

私はイテレータ/要素のもので野生のガチョウの追跡をしていたと思います。

于 2012-07-14T21:57:23.507 に答える