2

私はちょうど最近、tbody タグに関して一貫性のない Jsoup の動作に気付きました。

<table>
   <tbody>
     <tr><td>... text
   </tbody>
</table>

Jsoup は、select メソッド () によって返される要素に tbody 要素を含めません。

メソッド connect().get() を使用して、次のようなドキュメント変数にリモート ページを読み込みます。

Document doc = Jsoup.connect(url).get();
String expr = "table>tr>td";
String parsedTxt = doc.select(expr).text();

しかし、ローカル ディスクで同じページを解析したとき (ダウンロード後)。Jsoup には tbody タグが含まれています。tbody 要素が欠落しているため、式が機能しなくなります。

私が使う:

File input = new File(locationOfFile);
Document doc = Jsoup.parse(input, "UTF-8", "");

私の Jsoup 式は、最初のケースでのみ機能します。

両方のケースで同じ式を使用できるように、Jsoup に tbody 要素を認識させる (または削除する) ようにする方法はありますか?

これは Jsoup の正常な動作ですか?

ローカル ページの解析にも connect メソッドを使用する必要がありますか?

4

3 に答える 3

1

tbodyファイルを保存したときにタグが含まれている/作成されているファイルを保存するために使用したブラウザのようです。ファイルをデスクトップに保存するためにどのブラウザを使用しましたか?

curlまたはを使用して手動でファイルをダウンロードしてwgetから、ファイルから解析を試みます。

于 2011-06-17T14:29:07.897 に答える
0

firebug を使用して要素を検査する代わりに、ソース内を検索してみてください (ページ ソースを表示)。印刷/検査を試みる必要があります

Document.html() 

JSOUP が実際に html 全体を取得したかどうかを確認します。もしそうなら、次のステップはJSOUPで報告することですhttps://github.com/jhy/jsoup/issues

そうでない場合 (ほとんどの場合)、get 要求に追加のヘッダー (ユーザー エージェントや Cookie など) を追加してみてください。AJAXも問題になる可能性があり、その場合はSelenium http://seleniumhq.orgを使用する必要があります

于 2013-06-08T08:44:01.663 に答える
0

試すことができJsoup 1.7.3ます。それはあなたの状況に適しています。サンプルコードは以下です。

    String html
            = "<table>\n"
            + "<tbody>\n"
            + "<tr><td>... text.\n"
            + "</tbody>\n"
            + "</table>";
    Document doc = Jsoup.parse(html);
    Elements eles = doc.select("tbody > tr > td");

    for (Element ele : eles) {
        System.out.println(ele.toString());

    }

結果は次のとおりです。

    <td>... text. </td>
于 2014-03-11T13:34:53.073 に答える