Java读取html 中标签的值

步骤一:发送请求

在开发中,我们要直接访问一个链接地址可以用:

阿帕奇的:HttpClient.execute()

hutool的:httpUtil.sendGet()

okhttp的:okhttputil.get()

等等,有很多发送http请求的方法;

如果返回的是json格式的字符串,可以用jsonUtil的工具类,直接转换成jsonobject,然后直接jsonObject.get("key"),就可以拿到数据,那如果返回的是一个html页面呢,应该怎么获取html页面中的信息呢;

步骤二:解析 HTML

Java 提供了多个库用于解析 HTML,比如 Jsoup 和 HtmlUnit。这里以 Jsoup 为例。

引入jsoup库

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>
// 引入 Jsoup 库
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

// 使用 Jsoup 解析 HTML
Document doc = Jsoup.parse(html);
步骤三:提取指定内容

 根据 HTML 的结构和需要提取的内容,可以使用 Jsoup 提供的选择器来获取指定的元素。以下是几个常见的选择器示例:

根据标签名提取内容:

// 选择 <title> 标签
String title = doc.select("title").text();

// 选择 <h1> 标签
String h1 = doc.select("h1").text();

根据类名提取内容:

// 选择 class 为 "content" 的元素
String content = doc.select(".content").text();

根据 ID 提取内容:

// 选择 id 为 "main" 的元素
String mainContent = doc.select("#main").text();
其它:

 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据可以这样:

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改:

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/";);

解析一个body片断

Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。具体如下:

A:查看元素

 getElementById(String id)
    getElementsByTag(String tag)
    getElementsByClass(String className)
    getElementsByAttribute(String key) (and related methods)
    Element siblings: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
    Graph: parent(), children(), child(int index)

B:元素数据

  attr(String key)获取属性attr(String key, String value)设置属性
    attributes()获取所有属性
    id(), className() and classNames()
    text()获取文本内容text(String value) 设置文本内容
    html()获取元素内HTMLhtml(String value)设置元素内的HTML内容
    outerHtml()获取元素外HTML内容
    data()获取数据内容(例如:script和style标签)
    tag() and tagName()

C:操作HTML和文本

  append(String html), prepend(String html)
    appendText(String text), prependText(String text)
    appendElement(String tagName), prependElement(String tagName)
    html(String value)

从元素抽取属性,本文和HTML

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
  Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现
  Element link = doc.select("a").first();//查找第一个a元素

  String text = doc.body().text(); // "An example link"//取得字符串中的文本
  String linkHref = link.attr("href"); // "http://example.com/"//取得链接地址
  String linkText = link.text(); // "example""//取得链接地址中的文本

  String linkOuterH = link.outerHtml(); 
      // "<a href="http://example.com"><b>example</b></a>"
  String linkInnerH = link.html(); // "<b>example</b>"//取得链接内的html内容

等等还有很多方法,具体可参考:

Jsoup(一)Jsoup详解(官方)

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

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

相关文章

4.23日总结(项目总结)

1.项目&#xff1a; 今日项目通过一个在登录界面的一个静态变量&#xff0c;完成了区分老师和学生&#xff0c;能够分开老师和学生&#xff0c;并且不同身份的人进去会有不同的显示&#xff0c;以及登录链接主界面&#xff0c;还有学生和老师的不同的表&#xff0c;其次就是创…

「51媒体」新闻媒体邀约如何进行媒体宣传(方法)

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 新闻媒体邀约进行媒体宣传是一个策略性的过程&#xff0c;旨在吸引媒体的注意力并促使其对特定事件、产品发布或企业活动进行报道。以下是一些关键步骤和策略&#xff1a; 制定媒体传播方…

rust 学习笔记(13-19)

13 迭代器与闭包 Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是 函数式编程&#xff08;functional programming&#xff09;。函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。 闭包&#xff08;Closu…

网络爬虫快速入门及爬取百度搜索结果(附源码)

前言 爬虫的基本结构及工作流程 1. 确定目标 首先&#xff0c;确定你想要爬取的目标&#xff0c;包括目标网站或网页、需要提取的数据类型&#xff08;如文本、图片、视频等&#xff09;以及爬取的深度&#xff08;单页、整个网站等&#xff09;。 2. 获取网页内容 使用HT…

刷题之Leetcode242题(超级详细)

242.有效的字母异位词 力扣题目链接(opens new window)https://leetcode.cn/problems/valid-anagram/ 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true 示例 2…

基于51单片机的数码管显示的proteus仿真

文章目录 一、数码管二、单个数码管显示0~F仿真图仿真程序 三、数码管静态显示74HC138译码器74HC245缓冲器仿真图仿真程序 四、数码管动态显示仿真图仿真程序 三、总结 一、数码管 数码管&#xff0c;也称作辉光管&#xff0c;是一种可以显示数字和其他信息的电子设备。它的基…

Abaqus2024 安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到Abaqus2024”。 鼠标右击“此电脑”&#xff0c;选择“属性”。 点击“高级系统设置”。 点击“环境变量”。 点击“新建”。 变量名输入&#xff1a;NOLICENSECHECK 变量值输入&#xff1a;true 然后点击“确定”。 点击“确定”。…

SD-WAN多分支组网案例分享

随着企业规模持续扩大&#xff0c;业务版图日益多元&#xff0c;多分支组网已成为企业网络建设的核心议题。如何构建高效、安全且灵活的网络连接&#xff0c;成为企业急需解决的关键问题。近些年&#xff0c;SD-WAN技术的崭露头角&#xff0c;为企业带来了前所未有的解决方案。…

芯片数字后端设计入门书单推荐(可下载)

数字后端设计&#xff0c;作为数字集成电路设计的关键环节&#xff0c;承担着将逻辑设计转化为物理实现的重任。它不仅要求设计师具备深厚的电路理论知识&#xff0c;还需要对EDA工具有深入的理解和熟练的操作技能。尽管数字后端工作不像前端设计那样频繁涉及代码编写&#xff…

PLC无线通讯技术在汽车喷涂车间机械手臂上的应用

一、项目背景 在汽车生产装配工艺中&#xff0c;机械臂目前已经广泛地应用于装配、搬运等工业生产中&#xff0c;在机械臂系列产品中&#xff0c;汽车喷漆自动控制喷涂机械装置以其独特的优势&#xff0c;能够根据油漆喷涂量的大小&#xff0c;严格控制喷嘴与喷漆面之间距离等…

【数据库】聊聊普通索引和唯一索引怎么选

业务场景 在实际的业务中&#xff0c;一般都有用户信息表&#xff0c;而存储的数据包括(姓名、手机号、身份证号)&#xff0c;对于业务层面来说一个人的身份证号是唯一确定的&#xff0c;所以在创建表的时候&#xff0c;针对身份证号列就可以选择创建普通索引或唯一索引。那么…

Git 创建版本库

Git 创建版本库 | CoderMast编程桅杆Git 创建版本库 在 Git 上创建版本库有两种方式&#xff0c;一种是直接拷贝远程 Git 仓库到本地&#xff0c;另外一种是我们自己创建本地的版本库。 拷贝远程仓库 拷贝远程仓库时我们需要知道远程仓库的URL地址&#xff0c;直接使用如下命令…

手撕netty源码(一)- NioEventLoopGroup

文章目录 前言一、NIO 与 netty二、NioEventLoopGroup 对象的创建过程2.1 创建流程图 前言 本文是手撕netty源码系列的开篇文章&#xff0c;会先介绍一下netty对NIO关键代码的封装位置&#xff0c;主要介绍 NioEventLoopGroup 对象的创建过程&#xff0c;看看new一个对象可以做…

使用mapinfo软件的在线地图插件运行错误解决

使用mapinfo软件的在线地图插件运行错误解决 一、如何解决win10/win11家庭版运行MapInfo中的在线地图插件报错【unexpected error&#xff1b;quitting】问题&#xff1f;二、如何解决在线地图切换地图源时的报错问题&#xff1f; 一、如何解决win10/win11家庭版运行MapInfo中的…

Linux中进程和计划任务管理(2)

一.进程命令 1.lsof lsof 命令&#xff0c;“list opened files”的缩写&#xff0c;直译过来&#xff0c;就是列举系统中已经被打开的文件。通过 lsof 命令&#xff0c;我们就可以根据文件找到对应的进程信息&#xff0c;也可以根据进程信息找到进程打开的文件。 格式&…

Jackson 2.x 系列【31】Spring Boot 集成之字典翻译

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 场景描述2. 案例演示2.1 修改枚举2.2 定义注解…

【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

游戏黑灰产识别和溯源取证

参考&#xff1a;游戏黑灰产识别和溯源取证 1. 游戏中的黑灰产 1. 黑灰产简介 黑色产业&#xff1a;从事具有违法性活动且以此来牟取利润的产业&#xff1b; 灰色产业&#xff1a;不明显触犯法律和违背道德&#xff0c;游走于法律和道德边缘&#xff0c;以打擦边球的方式为“…

电磁仿真--基本操作-CST-(2)

目录 1. 回顾基操 2. 操作流程 2.1 创建工程 2.2 修改单位 2.3 创建 Shape 2.4 使用拉伸 Extrude 2.5 修改形状 Modify Locally 2.6 导入材料 2.7 材料解释 2.8 材料分配 2.9 查看已分配的材料 2.10 设置频率、背景和边界 2.11 选择 Edge&#xff0c;设置端口 2.…

深度解读半导体测试解决方案,4月25日精彩直播即将来袭!

半导体测试需求日益复杂、量产测试要求不断提升&#xff0c;行业工程师应该如何应对上述难题&#xff0c;提升测试的质量与效率&#xff0c;真正做到紧跟技术前沿&#xff0c;掌握创新应用&#xff0c;有效优化测试过程并降低测试成本&#xff1f; 针对上述痛点&#xff0c;加速…
最新文章