java springboot+jsoup写一段爬虫脚本 将指定地址的 图片链接 文本 超链接地址存入自己的属性类对象中

首先 还是最基本的 要在 pom.xml 引入依赖

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.1</version>
</dependency>

然后 我们可以在项目中创建一个属性类 我这里就叫 WebContent了
参考代码如下

package com.example.webdom.domain;

public class WebContent {
    private String url;
    private String text;
    private String image;

    public WebContent(String url, String text, String image) {
        this.url = url;
        this.text = text;
        this.image = image;
    }

    public String getUrl() {
        return url;
    }

    public String getText() {
        return text;
    }

    public String getImage() {
        return image;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setText(String text) {
        this.text = text;
    }

    public void setImage(String image) {
        this.image = image;
    }

    @Override
    public String toString() {
        return "WebContent{" +
                "a标签链接='" + url + '\'' +
                ", 文本内容='" + text + '\'' +
                ", 图片路径='" + image + '\'' +
                '}';
    }
}

这里 我们定义了三个变量 url 用来存 a标签的链接地址 text用来存a标签的文本信息 又或者图片的 alt内容 image用来存图片的url
定义了他们的get set方法 这里为了方便大家看 写了 toString函数
在这里插入图片描述
然后 我们在逻辑类 编写代码如下

package com.example.webdom.controller;

import com.example.webdom.domain.WebContent;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class WebCrawler {
    public static void main(String[] args) {
        String url = "https://www.baidu.com/?tn=48021271_25_hao_pg"; // 要爬取的网页URL

        try {
            Document doc = Jsoup.connect(url).get(); // 通过Jsoup连接并获取网页内容

            List<WebContent> webContents = new ArrayList<>(); // 创建属性类对象列表

            Elements links = doc.select("a[href]"); // 选择所有带有href属性的<a>元素
            for (Element link : links) {
                String linkText = link.text(); // 获取链接文本
                String linkHref = link.attr("href"); // 获取链接URL

                WebContent webContent = new WebContent(linkHref, linkText, null); // 创建属性类对象
                webContents.add(webContent); // 添加到对象列表
            }

            Elements images = doc.select("img[src]"); // 选择所有带有src属性的<img>元素
            for (Element image : images) {
                String imageUrl = image.attr("src"); // 获取图片URL
                String imageAlt = image.attr("alt"); // 获取图片alt属性
                WebContent webContent = new WebContent(null, imageAlt, imageUrl); // 创建属性类对象
                webContents.add(webContent); // 添加到对象列表
            }
            for (WebContent webContent : webContents) {
                System.out.println("----------------");
                System.out.println(webContent);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这里 我们用的百度首页的链接做测试 因为百度肯定技术是很好的 不怕我们访问
然后 我们拿取a标签 通过text函数 拿到文本 通过attr获取href 属性 拿到链接地址

然后 拿到所有的 img图 或许 src 与 alt属性

最后 输出list集合
运行代码如下
在这里插入图片描述
也是非常的完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

到底什么是DevOps

DevOps不是一组工具&#xff0c;也不是一个特定的岗位。在我看来DevOps更像是一种软件开发文化&#xff0c;一种实现快速交付能力的手段。 DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理&#xff0c;从而更快、更频繁地交付更稳定的…

微信这个地方,收费了

大家好&#xff0c;我是小悟 我们都知道&#xff0c;微信企业类型小程序需要认证&#xff0c;现在微信个人小程序也需要认证了&#xff0c;账号逾期未完成微信认证&#xff0c;将影响账号“被搜索”能力。 这一要求&#xff0c;在很多人看来可能是一项不必要的规定。然而&…

数据结构之---- 图

数据结构之---- 图 什么是图&#xff1f; 图是一种非线性数据结构&#xff0c;由顶点和边组成。我们可以将图 &#x1d43a; 抽象地表示为一组顶点 &#x1d449; 和一组边 &#x1d438; 的集合。 以下示例展示了一个包含 5 个顶点和 7 条边的图。 如果将顶点看作节点&…

【全面解读】洁净室验收及检测设备、方法全介绍

洁净室相关概念 洁净室又可称作无尘室&#xff08;Cleanroom&#xff09;&#xff0c;通常用作专业工业生产或科学研究的一部分&#xff0c;包括制造药品&#xff0c;集成电路&#xff0c;CRT&#xff0c;LCD&#xff0c;OLED和microLED显示器等。洁净室的设计是为了保持极低水…

数据结构之---- 堆、建堆操作、Top‑K 问题

数据结构之---- 堆、建堆操作、Top‑K 问题 什么是堆&#xff1f; 堆是一种满足特定条件的完全二叉树 主要可分为两种类型&#xff1a; 大顶堆&#xff1a;任意节点的值 ≥ 其子节点的值。小顶堆&#xff1a;任意节点的值 ≤ 其子节点的值。 堆作为完全二叉树的一个特例&am…

闲人闲谈PS之四十八——非标定制企业BOM传输问题

惯例闲话&#xff1a;上个月&#xff0c;集团公司组织了一次信息化大会&#xff0c;邀请国内外10几位知名的院士嘉宾来助阵。能听这些站在知识顶端的大佬的讲座&#xff0c;受益匪浅。至少在当下数字化趋势之下&#xff0c;细分领域的发展势头&#xff0c;有了方向性的指点。很…

C++怎么快速提升实力?

C怎么快速提升实力&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&…

什么是持续测试?为什么要持续测试?

测试是软件开发生命周期 (SDLC) 的重要组成部分。SDLC 的每个阶段都应包含测试&#xff0c;以获得更快的反馈并提高产品质量。 我们来聊聊持续测相关话题&#xff0c;如何从持续测试中获得更大的收益。 何谓持续测试 持续测试有助于在软件开发生命周期 (SDLC) 的所有阶段提供…

本地连锁门店经营可以借助系统实现哪些功能?

不少的连锁门店目前还是很基础的ERPPOS收银&#xff0c;其他的还是走传统的手工管理&#xff0c;大多连锁老板知道借助信息化系统可以帮助门店实现精细化管理&#xff0c;提高运营效率&#xff0c;降低成本&#xff0c;增强竞争力&#xff0c;但不知道怎么去做&#xff0c;能做…

快速搭建知识付费平台?我有才,为你提供一站式解决方案

在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护一个属于自己的知识付费平台需要…

《Java 已死、前端已凉》 我的评价是:中肯的

《Java 已死、前端已凉》 我的评价是&#xff1a;中肯的 如题所述 此次包含了前端、后端开发 以下为论述&#xff1a; 文章目录 前端后端当前环境附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大…

vscode 文件目录栏缩进

一个好的开发IDE&#xff0c;一定是让人赏心悦目的&#xff0c;这个赏心悦目也一定是包含层级目录的清晰明了&#xff01;不能像感冒的鼻涕一样一擤一摊子&#xff01;就像。。。。嗯&#xff0c;算了&#xff0c;断子还是不讲了&#xff0c;怕有些妹子投诉 或发消息批评我。。…

c++原子变量

原子变量 概述 ​ C11提供了一个原子类型std::atomic<T>&#xff0c;通过这个原子类型管理的内部变量就可以称之为原子变量&#xff0c;我们可以给原子类型指定bool、char、int、long、指针等类型作为模板参数&#xff08;不支持浮点类型和复合类型&#xff09;。 ​ …

如何用gpt改写文章 (1) 神码ai

大家好&#xff0c;今天来聊聊如何用gpt改写文章 (1)&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 如何用GPT改写文章 一、引言 随着人工智能技术的飞速发展&#xff0c;自然语言处理领域取得了重大突…

【一步到位】汽车过户全攻略:轻松搞定,告别繁琐流程

校长车行是一家昆明二手车代办公司&#xff0c;今天我们要聊一聊一个让很多人头疼的问题——汽车过户。相信很多朋友在购买二手车或者需要将车辆转让给他人时&#xff0c;都会遇到这个繁琐的流程。那么&#xff0c;如何才能轻松搞定汽车过户呢&#xff1f;接下来&#xff0c;就…

充电桩定期检测的必要性

充电桩是电动车充电的重要设备&#xff0c;其安全性直接关系到用户的生命财产安全。定期检测可以确保充电桩的正常运行&#xff0c;及时发现并修复潜在的安全隐患&#xff0c;提高充电桩的可靠性和安全性。 充电桩作为一个外部设备&#xff0c;长期暴露在室外环境中&#xff0c…

【cocotb】【达坦科技DatenLord】Cocotb Workshop分享

https://www.bilibili.com/video/BV19e4y1k7EE/?spm_id_from333.337.search-card.all.click&vd_sourcefd0f4be6d0a5aaa0a79d89604df3154a 方便RFM实现 cocotb_test 替代makefile &#xff0c; 类似python 函数执行

快宝技术:连接无代码开发,API集成提升电商营销和用户运营效率

无代码开发&#xff1a;创新的启航 快宝技术自2012年成立至今&#xff0c;一直是无代码开发领域的佼佼者。通过无代码开发平台&#xff0c;快宝技术旨在降低技术门槛&#xff0c;并使非技术人员能够轻松创建和部署应用程序。这不仅使得快递末端软件开发变得高效和便捷&#xf…

【51单片机系列】矩阵按键介绍

本节实现的功能是&#xff1a;通过开发板上的矩阵键盘控制静态数码管显示对应的键值0-F。 文章目录 一、矩阵按键介绍二、硬件设计三、软件设计 一、矩阵按键介绍 独立键盘与单片机连接时&#xff0c;每一个按键都需要单片机的一个I/O口。若某单片机系统需要较多按键&#xff…

快速上手linux | 一文秒懂Linux各种常用命令(中)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、常用目录操作1.1 mkdir 新建目录操作1.2 mrdir 删除空目录1.3 pwd 显示当前所在的工作目录 二、 文件操作命…