我目前正在为一家公司开发 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 feed,因为我的老板希望显示完整的文章。
最佳答案
首先您需要下载主页:
Document doc = Jsoup.connect("https://globalnews.ca/world/").get();
然后您选择您感兴趣的链接,例如 css selectors
您选择包含带有文本 globalnews
的 href
并嵌套在类 story-h
的 h3
标记中的所有 a
标记。网址位于 a
标记的 href
属性中。
for(Element e: doc.select("h3.story-h > a[href*=globalnews]")) {
System.out.println(e.attr("href"));
}
然后您可以根据需要处理生成的网址。您可以使用第一行等的语法下载前五个内容。
关于java - 如何使用 Jsoup 从网站获取最后 5 篇文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49548905/