我正在尝试学习jsoup的基本方法。我试图获取所有的超链接 一个特定的网页。但我使用stackoverflow链接然后,我无法获得该页面上的所有超链接,但另一方面,当我将其更改为 javatpoint它正在发挥作用。
有人可以解释为什么?
这是代码。
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.jsoup.*;
import org.jsoup.nodes.*;
import java.io.*;
import org.jsoup.nodes.Document;
class Repo {
// String html;
public static void main(String s[]) throws IOException {
try {
Document doc = Jsoup.connect("http://www.javatpoint.com/java-tutorial").get();
// Document doc=Jsoup.connect("http://www.stackoverflow.com").get();
System.out.println("doc");
// Elements link=(Elements)doc.select("span[class]");
// Elements link = doc.select("span").first();
// Elements link = (Elements)doc.select("span");
Elements link = (Elements) doc.select("a[href]");
for (Element el : link) {
// System.out.print("-");
// System.out.println(el.attr("class"));
String str = el.attr("href");
System.out.println(str);
}
} catch (Exception e) {
}
}
}
答案 0 :(得分:2)
许多网站要求有效的http请求来携带某些标头。一个突出的例子是userAgent标头。例如,这将适用于此:
Document doc = Jsoup
.connect("http://www.stackoverflow.com")
.userAgent("Mozilla/5.0")
.get();
旁注: 你应该从不尝试捕获异常,然后默默地忽略可能的失败案例。至少在那里做一些日志 - 否则你的程序将很难调试。