我目前正在为一家公司的Java桌面应用程序工作,他们问我,从网页中提取最后5篇文章并在应用程序中显示它们。要做到这一点,我当然需要一个HTML解析器,我直接想到了JSoup。但我的问题是我该怎么做呢?我从这个问题中找到了一个简单的例子:Example: How to “scan” a website (or page) for info, and bring it into my program?
使用此代码:
package com.stackoverflow.q2835505;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Test {
public static void main(String[] args) throws Exception {
String url = "https://stackoverflow.com/questions/2835505";
Document document = Jsoup.connect(url).get();
String question = document.select("#question .post-text").text();
System.out.println("Question: " + question);
Elements answerers = document.select("#answers .user-details a");
for (Element answerer : answerers) {
System.out.println("Answerer: " + answerer.text());
}
}
}
这段代码是由BalusC编写的,我理解它,但是当链接没有修复时我该怎么办呢,例如大多数报纸就是这种情况。为了简单起见,我将如何从这个新闻页面中提取最后的5篇文章:News?我无法使用RSS提要,因为我的老板希望显示完整的文章。
首先,您需要下载主页面:
Document doc = Jsoup.connect("https://globalnews.ca/world/").get();
然后你选择你感兴趣的链接,例如css selectors你选择所有包含a
和文本href
的globalnews
标签,并嵌套在h3
标签中,类为story-h
。网址是href
标签的a
属性。
for(Element e: doc.select("h3.story-h > a[href*=globalnews]")) {
System.out.println(e.attr("href"));
}
然后,您可以根据需要处理生成的URL。您可以使用第一行中的语法等下载前五个内容。