当前位置: 首页 > article >正文

Retrofit中Jsoup解析html(一)

简介

  Jsoup 是一个Java库,用于解析HTML文档和提取所需的数据。它提供了一种非常方便的方式来处理实际网页上的数据抓取、解析和操作。Jsoup能够将复杂的HTML文档转换成一个可操作的DOM(文档对象模型)树结构,使得开发者可以使用类似于jQuery的选择器语法来定位和提取文档中的元素。本章主讲Document类。

        Document 类是Jsoup库中的一个核心类,它代表了一个完整的HTML文档。当你使用Jsoup解析一个HTML字符串、URL或文件时,你会得到一个Document对象。这个对象允许你以面向对象的方式遍历和操作HTML文档中的各个部分,包括元素(如<div><a>)、属性(如classid)以及文本内容。

一、response.body()获取内容

String html = response.body();

               从Retrofit的响应对象(response)中提取HTML内容。response.body()方法返回的是HTTP响应的主体部分,这里假设它是一个HTML字符串。

二、Jsoup库解析HTML字符串

Document doc = Jsoup.parse(html);

        这里使用了Jsoup库来解析HTML字符串。Jsoup.parse(html)方法接收一个HTML字符串作为参数,然后将其解析成一个Document对象。Document对象就像是一个代表整个HTML文档的根节点,你可以通过它来访问和操作文档中的所有元素。

三、Document的text()方法纯文本内容

String description = doc.text();

        通过调用doc.text()方法,提取了整个HTML文档的纯文本内容。这意味着它会去除所有HTML标签,只保留文本数据。如果你的目标是提取特定的文本(比如某个标签内的文本或<meta>标签的描述信息),直接使用doc.text()可能不是最佳选择,因为它会合并文档中的所有可见文本。对于提取特定的meta描述,应使用类似doc.select("meta[name=description]").attr("content")的方法,如之前讨论的。

效果:

四、Document的title()方法标题

        String ht = doc.title();

        通过Jsoup的parse()方法解析HTML字符串后,可以直接调用title()方法获取<title>标签的文本内容。

效果:

五、根据id选择元素

String id = doc.getElementById("header").text();

        getElementById("header"): 这个方法用于从doc所代表的HTML文档中,根据指定的ID选择一个元素。在这里,"header"是作为参数传递的ID。这意味着它会查找文档中ID属性值为header的第一个元素。ID在HTML文档中应该是唯一的,所以这个方法应该只返回一个元素,但如果存在多个相同ID的情况(虽然不符合规范),Jsoup会返回第一个匹配的元素。

        .text(): 调用.text()方法是用于获取所选元素的纯文本内容。这将提取元素及其所有子元素中的文本,忽略HTML标签,把它们合并成一个无格式的字符串。换句话说,它提取的是用户在浏览器中能看到的文本部分,而不会包括任何HTML结构。

<nav >这里所有的文本数据均会被提取 </nav>

效果:

六、根据标签tag

String tag = doc.getElementsByTag("td").text();

        getElementsByTag("td"): 这个方法用于从doc中选择所有具有指定标签名的元素。在这里,传入的参数是"td",意味着它会查找文档中的所有<td>标签。getElementsByTag返回的是一个Elements集合,这个集合包含了文档中所有匹配该标签的元素。

        .text(): 当你调用一个Elements集合的.text()方法时,Jsoup会合并该集合中所有元素的纯文本内容,忽略HTML标签,将它们连接起来形成一个单一的字符串。这意味着如果集合中有多个<td>标签,.text()会提取每个<td>标签中的文本,并将这些文本串在一起,中间没有明显的分隔符(除非文本本身包含换行或空格)。

        

效果:

        String tag = doc.getElementsByTag("td").text();这行代码的意图是从整个HTML文档中找出所有<td>标签,并将这些标签中的文本内容合并成一个字符串,然后将这个字符串赋值给变量tag。然而,需要注意的是,如果文档中包含多个<td>元素,这种方法可能不会按照预期工作,因为它会将所有<td>内的文本合并到一起,可能导致信息混淆。如果需要分别处理每个<td>的文本,你应该遍历Elements集合,单独处理每个元素。

get()Elements集合位号获取:

        String tag2 = doc.getElementsByTag("td").get(0).text();

     doc: 这仍然是一个通过Jsoup解析得到的HTML文档对象,包含了文档的全部结构和内容。

     getElementsByTag("td"): 此方法查找文档中所有<td>标签的元素,并返回一个Elements集合,其中包含了所有匹配到的<td>元素。

     .get(0): 这里是对前面获取到的Elements集合进行操作,通过指定索引0来获取集合中的第一个元素。在Java的集合中,索引是从0开始的,因此get(0)就是获取第一个<td>标签元素。

     .text(): 最后,对选中的第一个<td>标签元素调用.text()方法,来提取该元素内部的纯文本内容,忽略所有HTML标签。

效果:


http://www.kler.cn/a/596887.html

相关文章:

  • 组合总和||
  • Postgresql 删除数据库报错
  • 【10】高效存储MongoDB的用法
  • LeetCode 热题 100_划分字母区间(80_763_中等_C++)(贪心算法(求并集))
  • Python 爬取 1688 关键词搜索接口数据返回说明
  • openai agent实践
  • 清晰易懂的 Kotlin 安装与配置教程
  • 【支持二次开发】基于YOLO系列的车辆行人检测 | 含完整源码、数据集、环境配置和训练教程
  • 初阶数据结构--顺序表
  • AI比人脑更强,因为被植入思维模型【15】马斯洛需求层次理论
  • 享元模式的原理的详细解析以及使用案例。
  • 【图像生成之十八】Seedream 2.0
  • 资源-HDR/材质/模型
  • 2025年01月13日字节(本地生活)前端面试
  • 代码随想录算法训练营第十四天|替换数字
  • 高斯数据库的空分区的查看和清理
  • 集成学习(上):Bagging集成方法
  • 【数学建模】最大最小值模型详解
  • 【商城实战(54)】解锁商城国际化密码:内容管理全攻略
  • 【Go】结构体的基本使用