java实现采集(爬)网页中的信息

2023-05-16

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。

在这里插入图片描述

前言

爬虫,大家都听过,可能好多人的第一印象,就是使用python进行操作,但是除了python之外,其他语言可以操作不?

答案是肯定的,今天我们就来看看如何使用java采集网页上的信息。

起因

起因是这样的,社群内好多粉丝都喜欢看每日分享的新闻,于是就写了个定时给微信群中推送新闻40条,后来,有人说,有没有历史上的今天,我找了找,也有。于是就把历史上的今天也加进去。

但是历史上的今天内容从哪里来的呢?从一个网页上采集下来的。

采集步骤

java中,以前还真没有过类似的场景,于是问了下claude,找到了答案,下面我整理出来分享给大家。

  1. pom文件中添加依赖。
 <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.2</version>
        </dependency>
  1. 写一个公共的方法,我这边为了高复用性,所以写了个工具类 CollectWebDataUtils

其中有两个方法:

/**
     * 采集农历查询网,历史上的今天的数据
     * tag:  0,历史上的今天
     * tag:  1,农历
     *
     */
    public String getCom(String date,Integer tag){
        String history = "";
        // 要爬取的网页URL
        String url = "http://xxxx.com/today/"+date+".html";
        if(tag==0){
            history  = getHistoryToday(url).toString();
        }

        return history;

    }
 /**
     * 获取历史上的今天
     * @param url
     */
    public JSONObject getHistoryToday(String url){
        JSONObject jsonObject   =  new JSONObject();
        // 连接到网址并获取网页内容
        Document doc = null;
        try {
            doc = Jsoup.connect(url).get().body().ownerDocument();
            // 获取所有class为theiaStickySidebar的元素
            Elements theiaStickySidebar = doc.getElementsByClass("sidemain");
            //找到第一个wz元素
            Elements wz = theiaStickySidebar.first().getElementsByClass("wz");
            //获取所有的li标签
            Elements lis = wz.select("li");
            JSONArray array = new JSONArray();
            for (Element li : lis) {
                JSONObject jsonObject_li = new JSONObject();
                //查找每个集合中的a标签
                Elements li_a = li.select("a");
                //年份
                jsonObject_li.put("year",li_a.get(0).text());
                //天
                jsonObject_li.put("days",li_a.get(1).text());
                //内容
                jsonObject_li.put("content",li_a.get(2).text());
                //添加到集合中
                array.add(jsonObject_li);
            }
            jsonObject.put("history",array);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

然后就可以了,最后我们调用一下进行测试

 public static void main(String args[]) {
        CollectWebDataUtils col = new CollectWebDataUtils();
        String result = col.getCom("2023-04-22",0);
        JSONObject object = JSONObject.parseObject(result);
        JSONArray contentList = object.getJSONArray("history");
        contentList.forEach(item->{
            JSONObject arrayObject = new JSONObject();
            JSONObject itemObject = (JSONObject)item;
            String year = itemObject.getString("year");
            String days = itemObject.getString("days");
            String content = itemObject.getString("content");
            System.out.println(year+"-"+days+":"+content);
        });

    }
  • getElementsByClass:获取class元素
  • first:获取第一个元素
  • select:获取所有的某个标签
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现采集(爬)网页中的信息 的相关文章

随机推荐

  • Elasticsearch快速入门 基础篇 (二)Elasticsearch各版本特性

    Elasticsearch快速入门 基础篇 Elasticsearch各版本特性 文章目录 Elasticsearch快速入门 基础篇 Elasticsearch各版本特性前言一 Elasticsearch 5 x之前二 Elasticse
  • 工欲善其事必先利其器 之 DockerDesktop(上)

    关键词 xff1a DockerDesktop 如何在桌面运行Docker Docker容器 工欲善其事必先利其器 之 DockerDesktop xff08 上 xff09 文章目录 工欲善其事必先利其器 之 DockerDesktop
  • 工欲善其事必先利其器 之 DockerDesktop(下)

    工欲善其事必先利其器 之 DockerDesktop xff08 下 xff09 文章目录 工欲善其事必先利其器 之 DockerDesktop xff08 下 xff09 前言一 DockerDesktop Settings二 什么是 W
  • 快速搭建开发环境 - Istio(最新版本)

    快速搭建开发环境 Istio 最新版本 关键词 xff1a istio istio基础 快速搭建istio环境 文章目录 快速搭建开发环境 Istio 最新版本 前言一 Istio 概述二 Istio 优势三 搭建 Istio 环境准备工作
  • 快速搭建开发环境 - ClickHouse(最新版本)

    快速搭建开发环境 ClickHouse 最新版本 关键词 xff1a ClickHouse ClickHouse环境搭建 列式存储数据库 大数据 文章目录 快速搭建开发环境 ClickHouse 最新版本 前言一 ClickHouse 概述
  • 实时数仓神器 - Flink-CDC(最新版本)

    实时数仓神器 Flink CDC 最新版本 关键词 xff1a Flink CDC Flink CDC入门教程 Flink CDC Connectors Flink CDC 2 0 0 文章目录 实时数仓神器 Flink CDC 最新版本
  • SpringBoot 升级至 2.6.3 项目启动报错-documentationPluginsBootstrapper

    SpringBoot 升级至 2 6 3 项目启动报错 documentationPluginsBootstrapper 关键词 xff1a Failed to start bean documentationPluginsBootstra
  • 解决git下载出现:Failed to connect to 127.0.0.1 port 1080: Connection refused拒绝连接错误

    解决git下载出现 xff1a Failed to connect to 127 0 0 1 port 1080 Connection refused拒绝连接错误 文章目录 xff1a 一 git拒绝连接原因分析 二 错误解决方式 1 查看
  • 无人机——开发环境搭建之初步接触

    本系列是基于pixhawk平台的px4固件而进行的 实验准备 1 一台pixhawk2 4 8的无人机 2 一台个人电脑 实验过程 使用QGroundControl给无人机刷固件 一 百度搜索QGC xff0c 下载qgc安装包 xff0c
  • 【Linux】怎么写一个最简单的Dockerfile?

    前提条件 xff1a 1 安装了docker环境 2 可以正常从官方上pull镜像 该容器是基于tomcat建立 xff0c 目的是为了知道一个Dockerfile的各个命令的含义以及运行一个dockerfile的前后都经历了什么 xff1
  • Javascript removeChild()删除节点及删除子节点的方法

    下面给大家介绍Javascript removeChild 删除节点的方法 xff0c 具体详情如下所示 xff1a 在Javascript中 xff0c 只提供了一种删除节点的方法 xff1a removeChild removeChil
  • 粒子群算法PSO 和 遗传算法GA 的相同点和不同点

    文章目录 PSO和GA的相同点PSO和GA不同点 喜欢的话请关注我们的微信公众号 你好世界炼丹师 公众号主要讲统计学 xff0c 数据科学 xff0c 机器学习 xff0c 深度学习 xff0c 以及一些参加Kaggle竞赛的经验 公众号内
  • 一:自己写一个控制台程序

    新建一个空项目 名称 位置 自己定义 添加头文件stdafx h 工程下面 头文件 右键添加 新建项 头文件 名称为 stdafx h 把集成的 stdafx h 里面的内容 xff08 涵盖了大部分所需的头文件 xff09 全部复制到 我
  • 无人机slam定位算法调研

    1 相关博客 xff0c 知乎 xff0c 网页 1 室内无源定位 激光SLAM在无人机上的飞行测试 2 高速飞行的无人机用SLAM怎样导航 3 泡泡图灵智库 面向无人机的高效双目SLAM 2 相关论文 无人机景象匹配视觉导航技术综述 四旋
  • 嵌入式中可能使用的算法

    在嵌入式的测量中可能存在某些无法被直接测量的变量 xff0c 但可能可以通过几个不同的数据指标运算处理得到 xff0c 这里介绍最小而成发 xff0c 最小二乘法适用于描述Y 61 AX 43 B的数据 xff0c 即寻找到最合适的一条通过
  • 项目参与度较低怎么办?

    大家好 xff0c 我是雄雄 xff0c 欢迎关注公众号 雄雄的小课堂 经过这两天做项目的表现 xff0c 可以很明显的看的出来学生与学生之间掌握的还是有差距的 xff0c 组内有的组员是可以为项目贡献代码的 xff0c 但是有的组员可能只
  • 微信小程序中使用画布canvas实现动态心电图绘制

    大家好 我是雄雄 内容先知 前言 效果图 实现代码 前言 近期 接了个项目 三端 小程序 PC 公众号 同步开发 PC端没的问题 以前一直做的就是PC端 但是小程序和公众号之前没有做过 只能通过这个项目 边做边学了 人家都说小程序用原生的特
  • C#中请求HTTP接口api的方法

    大家好 xff0c 我是雄雄 xff0c 欢迎关注微信公众号 xff1a 雄雄的小课堂 前言 现在是 xff1a 2023年2月15日22 14 30 搞代码的陈戌源都知道 xff0c 哦 xff0c 不好意思 xff0c 是程序员 xff
  • 如何usb 触摸设备不识别为usb mouse

    一 获取输入设备name 有一下两种方法 1 使用 cat proc bus input devices 可以查看 输入设备信息 I Bus 61 0018 Vendor 61 0000 Product 61 0000 Version 61
  • java实现采集(爬)网页中的信息

    大家好 xff0c 我是雄雄 xff0c 欢迎关注微信公众号 xff1a 雄雄的小课堂 前言 爬虫 xff0c 大家都听过 xff0c 可能好多人的第一印象 xff0c 就是使用python进行操作 xff0c 但是除了python之外 x