You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jsoup提取气象网站指定CSS类内的日期文本?

问题原因

  • CSS选择器语法错误:第二处select方法中的选择器缺少结尾闭合的],会直接抛出选择器语法异常
  • 逻辑冗余:已经通过first()拿到了目标date date-2节点对象,不需要重复执行select选择该节点,直接调用text()即可获取节点内文本
  • 选择器写法可优化:多类选择器推荐使用.date.date-2写法,比全匹配class属性的写法兼容性更强,避免节点新增其他类时匹配失败
  • 缺少非空校验:如果页面结构变动匹配不到节点,first()返回null会触发空指针异常
  • 若需将Tue, Oct 12格式转为10月12日,还需要额外做日期格式转换处理

修正后代码

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Pars {
    private static Document getPage() throws IOException {
        String url = "https://www.gismeteo.by/weather-mogilev-4251/3-day/";
        // 模拟浏览器请求头,避免被反爬拦截
        Document page = Jsoup.connect(url)
                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
                .timeout(3000)
                .get();
        return page;
    }

    public static void main(String[] args) throws IOException {
        Document page = getPage();
        // 优化选择器写法,增加非空判断
        Element nameday = page.select("div.date.date-2").first();
        if (nameday == null) {
            System.out.println("未匹配到目标日期节点");
            return;
        }
        // 直接获取节点文本
        String originDateStr = nameday.text();
        System.out.println("原始日期字符串:" + originDateStr);

        // 日期格式转换:将英文日期转为「X月X日」格式
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("EEE, MMM d", Locale.ENGLISH);
        LocalDate date = LocalDate.parse(originDateStr, inputFormatter);
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("M月d日");
        String cnDateStr = outputFormatter.format(date);
        System.out.println("转换后中文日期:" + cnDateStr);
    }
}

注意事项

  • 如果请求被反爬返回403,可调整userAgent参数,或补充cookie、代理等配置
  • 如果页面返回的日期包含年份,需要对应调整日期格式化字符串的规则

内容的提问来源于stack exchange,提问作者Sergant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:36:03