java - 如何使用 Jsoup 从网站获取最后 5 篇文章

标签 java html web-scraping jsoup

我目前正在为一家公司开发 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 您选择包含带有文本 globalnewshref 并嵌套在类 story-hh3 标记中的所有 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/

相关文章:

web-scraping - Nutch - 克隆网站

python - 如何使用 NBA.com 的数据?

java - 将字符串转换为日期对象

python - 如何根据表单输入更新现有的Python Flask网页?

html - 如何使用css向tr添加边框,其中包含th

html - CSS transition on height auto 仅在添加类时有效,在删除类时无效

python - 抓取 youtube 数据的合法性是什么?

java - 使用 myString.split 时遇到问题 ("\n");

Java在对象构造函数中启动线程池

java - 为 http url 请求类型传递多个 URL