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);
}
}
我正在尝试抓取this page中ul
标记所呈现的所有html列表。但它失败了。我怀疑页面中有脚本阻止我的程序这样做。
修改:为了使我的问题更简单,请考虑以下代码:
Document doc = Jsoup.connect("http://www.utah.edu/").get();
Elements lists = doc.select("ul");
System.out.println(lists.size());
输出:
0
答案 0 :(得分:1)
一个可能的答案是,jsoup发送的 User-Agent 标头让utah.edu认为它是机器人而不是浏览器。所以它返回其他页面内容。
在org/jsoup/helper/HttpConnection.java
已实施的get()
中,默认情况下不会发送 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();