java解析html

news2024/11/23 2:10:40

目录

  • 场景描述
  • 一.引入依赖
  • 二.调用接口响应回来的html
  • 三.测试代码

场景描述

我调用外部接口,但是返回来的数据是html的格式,所以我就需要进行处理来获得我想要的数据。我使用的是jsoup

一.引入依赖

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

二.调用接口响应回来的html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td {
	font-family: "微软雅黑"!important;
}
</style>
<script type="text/javascript" src="https://www.ikun.com.cn/statics/js/jquery-1.7.2.js"></script>
</head>
<body>
<link rel="stylesheet" href="https://www.ikun.com.cn/statics/css/list.css" />
<link rel="stylesheet" href="https://www.ikun.com.cn/statics/css/base.css" />
<!--main-->
<div class="w870" style="background:#fff">
  <div class="suipin"> <a href="https://www.ikun.com.cn">首页</a>><b class="mowei"><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=lists&catid=194">智库</a> > <a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=lists&catid=201">港口</a> > <a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=lists&catid=226">ikun日记</a> >  列表</b> </div>
  <!--最新下载-->
  <table width="100%" class="mtzktab" id="mtzktab">
    <thead>
      <tr class="biaoti">
        <th width="70%" align="left">ikun日记</th>
       <!-- <th width="15%">点击</th> -->
        <th width="30%">发布时间</th>
      </tr>
    </thead>
    <tbody>
    
                                             

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235904" target="_blank">ikun日记(第468期)</a></td>
     <!-- <td align="center">0</td> -->
      <td align="center">2023-08-21</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235638" target="_blank">ikun日记(第467期)</a></td>
     <!-- <td align="center">3</td> -->
      <td align="center">2023-08-14</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235402" target="_blank">ikun日记(第466期)</a></td>
     <!-- <td align="center">10</td> -->
      <td align="center">2023-08-07</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235224" target="_blank">ikun日记(第465期)</a></td>
     <!-- <td align="center">4</td> -->
      <td align="center">2023-07-31</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235047" target="_blank">ikun日记(第464期)</a></td>
     <!-- <td align="center">6</td> -->
      <td align="center">2023-07-24</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=235043" target="_blank">ikun日记(第463期)</a></td>
     <!-- <td align="center">2</td> -->
      <td align="center">2023-07-17</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=234716" target="_blank">ikun日记(第462期)</a></td>
     <!-- <td align="center">5</td> -->
      <td align="center">2023-07-10</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=234535" target="_blank">ikun日记(第461期)</a></td>
     <!-- <td align="center">9</td> -->
      <td align="center">2023-07-03</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=234531" target="_blank">ikun日记(第460期)</a></td>
     <!-- <td align="center">1</td> -->
      <td align="center">2023-06-19</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=234100" target="_blank">ikun日记(第459期)</a></td>
     <!-- <td align="center">6</td> -->
      <td align="center">2023-06-12</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=233842" target="_blank">ikun日记(第458期)</a></td>
     <!-- <td align="center">3</td> -->
      <td align="center">2023-06-05</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=233838" target="_blank">ikun日记(第457期)</a></td>
     <!-- <td align="center">1</td> -->
      <td align="center">2023-05-29</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=233551" target="_blank">ikun日记(第456期)</a></td>
     <!-- <td align="center">7</td> -->
      <td align="center">2023-05-22</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=233279" target="_blank">ikun日记(第455期)</a></td>
     <!-- <td align="center">6</td> -->
      <td align="center">2023-05-15</td>
    </tr>
                                         

    <tr>
      <td><div class="dian">.</div><a href="https://www.ikun.com.cn/index.php?m=content&c=index&a=show&catid=226&id=233087" target="_blank">ikun日记(第454期)</a></td>
     <!-- <td align="center">8</td> -->
      <td align="center">2023-04-29</td>
    </tr>
          </tbody>
    
  </table>
  <div id="pages"> <a class="a1">368条</a> <a href="index.php?m=content&c=index&a=lists&catid=226" class="a1">上一页</a> <span>1</span> <a href="index.php?m=content&c=index&a=lists&catid=226&page=2">2</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=3">3</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=4">4</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=5">5</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=6">6</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=7">7</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=8">8</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=9">9</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=10">10</a> ..<a href="index.php?m=content&c=index&a=lists&catid=226&page=25">25</a> <a href="index.php?m=content&c=index&a=lists&catid=226&page=2" class="a1">下一页</a> </div>
   
  <script type="text/javascript">
                $().ready(function () {
                    $('#mtzktab tbody tr:odd').css('background', '#eeeeee'); 
                });
  </script> 
</div>
</body>
</html>

在这里插入图片描述

三.测试代码

package org.jeecg.modules.mt.controller;

import cn.hutool.http.HttpUtil;
import org.jsoup.Jsoup;
import org.springframework.util.StringUtils;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;

public class Test {



    public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {

        String apiUrl = "https://www.ikun.com.cn/index.php?m=content&c=index&a=lists&catid=226&page=1";

        // 发送get请求
        String body = HttpUtil.createPost(apiUrl).execute().body();
        Document doc = Jsoup.parse(body);

        //获取<tbody>标签下的<div>标签,并把<div>标签的值改为空
        Elements headingsDiv = doc.select("tbody").select("div");
        for (Element element : headingsDiv) {
            element.text("");
        }
        //获取<tbody>标签下的<td>标签
        Elements headings = doc.select("tbody").select("td");
        //循环获取的<td>标签
        for (int i = 0; i < headings.size(); i++) {
        	//获取<td>标签内的值
            String text = headings.get(i).text();
            //因为包含两个不同的<td>标签,所以需要取余
            if (i%2 == 0){
            	//获取<td>标签下的<a>标签的 href 属性的值
                String href = headings.get(i).select("a").attr("href");
                System.out.println("文件下载地址:"+href);
                System.out.println("文件名称:"+text);
            }else {
                System.out.println("文件时间:"+text);
            }
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:初始化表总结

1.为成员变量赋值2.指定基类的构造函数3.指定组合对象所在类的构造函数

Vue.js安装步骤和注意事项

安装完node.js后开始安装和部署Vue在检查webpack的下载版本时出现错误出现错误的原因是之前下载时未指定对应的版本号导致版本不兼容先卸载掉之前下载的版本 cnpm uninstall webpack-cli -g cnpm install webpack-cli4.9.2 -g 最后检查版本是否对应

【不会用这个工具,你的Linux服务器就是个摆设!】

01 Tcpdump Tcpdump 是一个强大的网络监控工具&#xff0c;它允许用户有效地过滤网络上的数据包和流量。 这可以获得有关 TCP/IP 和网络上传输的数据包的详细信息。 当你遇到网络协议问题一筹莫展的时候&#xff0c;这时候往往可以通过tcpdump来看网络的通讯过程中发生了什么…

Android Glide preload RecyclerView切入后台不可见再切换可见只加载当前视野可见区域item图片,Kotlin

Android Glide preload RecyclerView切入后台不可见再切换可见只加载当前视野可见区域item图片&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.RE…

C++学习记录——삼십 智能指针

文章目录 1、为什么需要智能指针&#xff1f;2、内存泄漏3、智能指针的使用及原理1、RAII思想2、拷贝问题1、unique_ptr2、shared_ptr1、多线程2、循环引用3、定制删除器 1、为什么需要智能指针&#xff1f; 看一个场景 int div() {int a, b;cin >> a >> b;if (b…

初探---Qt

目录 一、介绍Qt 二、软件安装 三、QT工具介绍 四、Assistant帮助文档的使用 五、设计师界面的介绍 ​编辑 六、QT工程项目各文件初始程序的介绍 1> 配置文件&#xff1a;.pro文件 2> 头文件 3> 源文件 4> 主程序 5> 各文件之间调用方式 七、第一个…

一篇文章搞定《WebView的优化及封装》

一篇文章搞定《WebView的优化及封装》 前言WebView的过程分析确定优化方案一、预加载&#xff0c;复用缓冲池&#xff08;初始化优化&#xff09;优化的解析说明具体的实现 二、预置模版&#xff08;请求、渲染优化&#xff09;优化的解析说明具体的实现1、离线包2、预获取数据…

【云原生进阶之PaaS中间件】第一章Redis-2.3.3集群模式

1 集群模式 Redis集群是一个提供在多个Redis节点之间共享数据的程序集。它并不像Redis主从复制模式那样只提供一个master节点提供写服务,而是会提供多个master节点提供写服务,每个master节点中存储的数据都不一样,这些数据通过数据分片的方式被自动分割到不同的master节点上…

手写实现call() apply() bind()函数,附有详细注释,包含this指向、arguments讲解

手写实现call() apply() bind()函数是很经典的问题&#xff0c;但是能掰扯清楚的文章确实不算多&#xff0c;于是笔者才决定写下本文&#xff0c;希望能给读者带来一些启发&#xff0c;如有错误欢迎指正。 目录 补充知识 函数中的this指向 类数组对象arguments call() 原理…

Leedcode19. 删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1…

MPI之持久化通信句柄与非持久化通信句柄

MPI_Isend & MPI_Send 创建临时通信句柄 在前面的文章中举了例子&#xff0c;我们使用MPI_Isend接口发送数据时&#xff0c;有个传出参数request&#xff0c;该参数是创建的通信句柄&#xff0c; 实际上该句柄是一个临时句柄&#xff0c;即只用于一次性发送数据的场景&…

uniapp iOS打包证书申请流程——mac

如何在 Mac 创建 iOS 打包证书&#xff1f; 文章目录 如何在 Mac 创建 iOS 打包证书&#xff1f;会员 VS 非会员权限步骤添加设备创建标识符生成证书生成描述文件 前提&#xff1a; Mac 电脑Apple ID 申请Apple ID成为开发者 developer 注意&#xff1a; 登录 Apple ID 成为开…

2023年数字孪生行业研究报告

第一章 行业概况 1.1 定义 数字孪生&#xff08;Digital Twin&#xff09;是一种先进的建模技术&#xff0c;它通过创建一个物理实体的虚拟复制品&#xff0c;以实时模拟、预测和优化实体的行为和性能。这个虚拟模型会同步收集和分析来自其物理对应物的数据&#xff0c;从而提…

【DRONECAN】(三)WSL2 及 ubuntu20.04 CAN 驱动安装

【DRONECAN】&#xff08;三&#xff09;WSL2 及 ubuntu20.04 CAN 驱动安装 前言 这一篇文章主要介绍一下 WSL2 及 ubuntu20.04 CAN 驱动的安装&#xff0c;首先说一下介绍本文的目的。 大家肯定都接触过 ubuntu 系统&#xff0c;但是我们常用的操作系统都是 Windows&#x…

JavaSE基础(2)

1 方法的使用 思维导图 1.1 什么是方法 方法就是一个代码片段. 类似于 C 语言中的 “函数”。方法存在的意义(不要背, 重在体会): 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法…

基于金枪鱼群算法优化的BP神经网络(预测应用) - 附代码

基于金枪鱼群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于金枪鱼群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.金枪鱼群优化BP神经网络2.1 BP神经网络参数设置2.2 金枪鱼群算法应用 4.测试结果&#xff1a;5…

肠道微生物群肾衰竭

编者推荐 该研究应用多组学分析&#xff08;代谢组学分析微生物组学分析&#xff09;分析了人类ESRD肠道微生物组组成、尿毒症毒素和肾衰竭之间的关系&#xff0c;使用独立队列和无菌动物模型对多组学结果及研究提出的ESRD机制假设进行验证&#xff0c;首次从肠道微生物的角度…

qt第一天

#include "widget.h" #include "ui_widget.h" #include "QDebug" Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(QSize(800,600)); //使用匿名对象&#xff0c;调用重…