0
    Document doc = Jsoup.connect("http://www.utah.edu/").get();
    Elements lists = doc.select("ul");
    for (Element list: lists) {
        Elements li = list.select("li a");
        if (li.size() > 0) {
            ArrayList<String> anchors = new ArrayList<String>();
            for (Element e : li) {
                anchors.add(e.text());
            }
            System.out.println(anchors);
        }
    }

このページulのタグによってレンダリングされたすべての html リストを取得しようとしています。しかし、それは失敗しました。私のプログラムがそうするのを妨げているスクリプトがページにあると思われます。

編集:私の質問をさらに簡単にするために、次のコードを検討してください:

Document doc = Jsoup.connect("http://www.utah.edu/").get();
Elements lists = doc.select("ul");
System.out.println(lists.size());

出力:

0
4

1 に答える 1

1

考えられる答えは、jsoup によって送信されたUser-Agentヘッダーにより、utah.edu がブラウザではなくボットであると認識したことです。そのため、他のページ コンテンツが返されます。

org/jsoup/helper/HttpConnection.java実装済みで、特に指示がない限り、デフォルトでは User-Agent ヘッダーを送信get()ません。

したがって、を使用して手動で設定する必要がありますuserAgent()

例、偽の Chrome:

String ua = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11";
Document doc = Jsoup.connect("http://www.utah.edu/").userAgent(ua).get();
于 2012-12-01T10:03:13.743 に答える