我一直在尝试下载Google新闻RSS Feed的源代码。除了显示奇怪的链接外,它已正确下载。
static String urlNotizie = "https://news.google.it/news/feeds?pz=1&cf=all&ned=it&hl=it&output=rss";
Document docHtml = Jsoup.connect(urlNotizie).get();
String html = docHtml.toString();
System.out.println(html);
输出:
<html>
<head></head>
<body>
<rss version="2.0">
<channel>
<generator>
NFE/1.0
</generator>
<title>Prima pagina - Google News</title>
<link />http://news.google.it/news?pz=1&ned=it&hl=it
<language>
it
</language>
<webmaster>
news-feedback@google.com
</webmaster>
<copyright>
&copy;2013 Google
</copyright> [...]
使用URLConnection我能够输出正确的页面来源。但是在解析过程中,我遇到了与上面相同的问题,它会吐出<link />.
的列表(同样只有链接。解析其他的东西工作正常)。 URLConnection示例:
URL u = new URL(urlNotizie);
URLConnection yc = u.openConnection();
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
builder.append("\n");
}
String html = builder.toString();
System.out.println("HTML " + html);
Document doc = Jsoup.parse(html);
Elements listaTitoli = doc.select("title");
Elements listaCategorie = doc.select("category");
Elements listaDescrizioni = doc.select("description");
Elements listaUrl = doc.select("link");
System.out.println(listaUrl);
答案 0 :(得分:1)
Jsoup被设计为HTML parser,而不是XML(也不是RSS)解析器。
HTML <link>
element被指定为没有任何正文。 invalid有一个<link>
元素,其主体与XML一样。
您可以使用Jsoup解析XML,但您需要明确地tell切换到XML parsing mode。
替换
Document docHtml = Jsoup.connect(urlNotizie).get();
通过
Document docXml = Jsoup.connect(urlNotizie).parser(Parser.xmlParser()).get();