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.javaimplementedget()中,默认情况下不发送User-Agent标头,除非另有说明。

因此,您需要使用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 回答