• Java实现对Html文本的处理


     1.引入jsoup

    1. org.jsoup
    2. jsoup
    3. 1.8.3

    2. html示例

    示例代码: 

    1. html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    4. <title>
    5. 个人信用报告
    6. title>
    7. <style media=print>
    8. .Noprint { display: none; }
    9. style>
    10. <style type="text/css">
    11. body{ background: #FFFFFF; } table { border-collapse: collapse; border: 0; width: 70%; } td { border: #000000 solid 1px; padding: 4px; font-size: 13px; text-align: center; } .thead { background: #FFFFFF; font-weight: bold; } a{ position: relative; z-index: 1; } #side-nav { position: fixed; _position: absolute; top: 10px; right: 10px; border: 1px black solid; width: 14%; z-index: 1; } .nav-style { border-style: none; font-size: 13px; font-weight: bold; background: #FFFFFF; } .report-title { border-style: none; font-size: 24px; font-weight: bold; text-align: center; } .title-style1 { border-style: none; font-size: 21px; font-weight: bold; text-align: center; } .title-style2 { border-style: none; font-size: 15px; font-weight: bold; text-align: center; } .title-style3 { font-size: 13px; font-weight: bold; text-align: center; } .td-no-border { border-style: none; } .table-tips { font-style: italic; font-size: 10px; text-align: left; } .td-no-report { border: #FFF solid 0px; font-size: 22px; font-weight: bold; } .watermark { position: fixed; background: no-repeat center; transform: rotate(-30deg); filter: alpha(opacity=20); opacity: .20; }
    12. style>
    13. head>
    14. <body>
    15. <div id="side-nav" class="Noprint">
    16. <table align="center">
    17. <tr>
    18. <td class="nav-style" align="center">
    19. <a href="#Header">报告头a>
    20. td>
    21. tr>
    22. <tr>
    23. <td class="nav-style" align="center">
    24. <a href="#PersonalInfo">个人基本信息a>
    25. td>
    26. tr>
    27. <tr>
    28. <td class="nav-style" align="center">
    29. <a href="#InfoSummary">信息概要a>
    30. td>
    31. tr>
    32. <tr>
    33. <td class="nav-style" align="center">
    34. <a href="#CreditDetail">信贷交易信息明细a>
    35. td>
    36. tr>
    37. <tr>
    38. <td class="nav-style" align="center">
    39. <a href="#QueryRecord">查询记录a>
    40. td>
    41. tr>
    42. table>
    43. div>
    44. <div align='center' class='watermark' style='top:15%;'>
    45. <font size='5px' color='gray'>
    46. test99
    47. font>
    48. <br/>
    49. <font size='5px' color='gray'>
    50. 1
    51. font>
    52. <font size='5px' color='gray'>
    53. 20231030155315
    54. font>
    55. div>
    56. <div align='center' class='watermark' style='top:15%;left:33%'>
    57. <font size='5px' color='gray'>
    58. test99
    59. font>
    60. <br/>
    61. <font size='5px' color='gray'>
    62. 1
    63. font>
    64. <font size='5px' color='gray'>
    65. 20231030155315
    66. font>
    67. div>
    68. <div align='center' class='watermark' style='top:15%;left:66%'>
    69. <font size='5px' color='gray'>
    70. test99
    71. font>
    72. <br/>
    73. <font size='5px' color='gray'>
    74. 1
    75. font>
    76. <font size='5px' color='gray'>
    77. 20231030155315
    78. font>
    79. div>
    80. <div align='center' class='watermark' style='top:50%;'>
    81. <font size='5px' color='gray'>
    82. test99
    83. font>
    84. <br/>
    85. <font size='5px' color='gray'>
    86. 1
    87. font>
    88. <font size='5px' color='gray'>
    89. 20231030155315
    90. font>
    91. div>
    92. <div align='center' class='watermark' style='top:50%;left:33%'>
    93. <font size='5px' color='gray'>
    94. test99
    95. font>
    96. <br/>
    97. <font size='5px' color='gray'>
    98. 1
    99. font>
    100. <font size='5px' color='gray'>
    101. 20231030155315
    102. font>
    103. div>
    104. <div align='center' class='watermark' style='top:50%;left:66%'>
    105. <font size='5px' color='gray'>
    106. test99
    107. font>
    108. <br/>
    109. <font size='5px' color='gray'>
    110. 1
    111. font>
    112. <font size='5px' color='gray'>
    113. 20231030155315
    114. font>
    115. div>
    116. <div align='center' class='watermark' style='top:85%;'>
    117. <font size='5px' color='gray'>
    118. test99
    119. font>
    120. <br/>
    121. <font size='5px' color='gray'>
    122. 1
    123. font>
    124. <font size='5px' color='gray'>
    125. 20231030155315
    126. font>
    127. div>
    128. <div align='center' class='watermark' style='top:85%;left:33%'>
    129. <font size='5px' color='gray'>
    130. test99
    131. font>
    132. <br/>
    133. <font size='5px' color='gray'>
    134. 1
    135. font>
    136. <font size='5px' color='gray'>
    137. 20231030155315
    138. font>
    139. div>
    140. <div align='center' class='watermark' style='top:85%;left:66%'>
    141. <font size='5px' color='gray'>
    142. test99
    143. font>
    144. <br/>
    145. <font size='5px' color='gray'>
    146. 1
    147. font>
    148. <font size='5px' color='gray'>
    149. 20231030155315
    150. font>
    151. div>
    152. <div>
    153. <div class="report-title" style="margin-top: 15px;">
    154. 个人信用报告
    155. div>
    156. <div class="title-style2" style="margin-top: 8px;">
    157. (授信机构版)
    158. div>
    159. div>
    160. <div id="Header">
    161. <table align="center">
    162. <tr>
    163. <td class="td-no-border" style="text-align:left">
    164. 报告编号:2023100117121647378010
    165. td>
    166. <td class="td-no-border" style="text-align:right">
    167. 报告时间:2023-10-23 17:18:16
    168. td>
    169. tr>
    170. table>
    171. <table align="center">
    172. <tr class="thead">
    173. <td>
    174. 被查询者姓名
    175. td>
    176. <td>
    177. 被查询者证件类型
    178. td>
    179. <td>
    180. 被查询者证件号码
    181. td>
    182. <td>
    183. 查询机构
    184. td>
    185. <td>
    186. 查询原因
    187. td>
    188. tr>
    189. <tr>
    190. <td>
    191. 杨晴晴
    192. td>
    193. <td>
    194. 身份证
    195. td>
    196. <td>
    197. 32082719901102604X
    198. td>
    199. <td>
    200. 1
    201. td>
    202. <td>
    203. 贷后管理
    204. td>
    205. tr>
    206. table>
    207. <br/>
    208. div>
    209. <div id="PersonalInfo">
    210. <div class="title-style1">
    211.  个人基本信息
    212. div>
    213. <br/>
    214. <div class="title-style2">
    215. (一)身份信息
    216. div>
    217. <table align="center">
    218. <tr class="thead">
    219. <td>
    220. 性别
    221. td>
    222. <td>
    223. 出生日期
    224. td>
    225. <td>
    226. 婚姻状况
    227. td>
    228. <td>
    229. 学历
    230. td>
    231. <td>
    232. 学位
    233. td>
    234. <td>
    235. 就业状况
    236. td>
    237. <td>
    238. 国籍
    239. td>
    240. <td>
    241. 电子邮箱
    242. td>
    243. tr>
    244. <tr>
    245. <td>
    246. td>
    247. <td>
    248. 1980-06-30
    249. td>
    250. <td>
    251. --
    252. td>
    253. <td>
    254. 初中及以下
    255. td>
    256. <td>
    257. --
    258. td>
    259. <td>
    260. 在职
    261. td>
    262. <td>
    263. 中国
    264. td>
    265. <td>
    266. 1309867680@qq.com
    267. td>
    268. tr>
    269. <tr class="thead">
    270. <td colspan="5">
    271. 通讯地址
    272. td>
    273. <td colspan="3">
    274. 户籍地址
    275. td>
    276. tr>
    277. <tr>
    278. <td colspan="5">
    279. 福建省福州市平潭县苏澳镇斗魁村斗魁58号
    280. td>
    281. <td colspan="3">
    282. --
    283. td>
    284. tr>
    285. <tr class="thead">
    286. <td>
    287. 编号
    288. td>
    289. <td colspan="4">
    290. 手机号码
    291. td>
    292. <td colspan="3">
    293. 信息更新日期
    294. td>
    295. tr>
    296. <tr>
    297. <td>
    298. 1
    299. td>
    300. <td colspan="4">
    301. 18855583001
    302. td>
    303. <td colspan="3">
    304. 2019-07-18
    305. td>
    306. tr>
    307. <tr>
    308. <td>
    309. 2
    310. td>
    311. <td colspan="4">
    312. 18855583002
    313. td>
    314. <td colspan="3">
    315. 2019-06-25
    316. td>
    317. tr>
    318. <tr>
    319. <td>
    320. 3
    321. td>
    322. <td colspan="4">
    323. 18855583003
    324. td>
    325. <td colspan="3">
    326. 2019-04-26
    327. td>
    328. tr>
    329. <tr>
    330. <td>
    331. 4
    332. td>
    333. <td colspan="4">
    334. 18855583004
    335. td>
    336. <td colspan="3">
    337. 2019-01-26
    338. td>
    339. tr>
    340. <tr>
    341. <td>
    342. 5
    343. td>
    344. <td colspan="4">
    345. 15105055999
    346. td>
    347. <td colspan="3">
    348. 2018-11-14
    349. td>
    350. tr>
    351. <tr>
    352. <td>
    353. 6
    354. td>
    355. <td colspan="4">
    356. 13023801517
    357. td>
    358. <td colspan="3">
    359. 2018-09-11
    360. td>
    361. tr>
    362. <tr>
    363. <td>
    364. 7
    365. td>
    366. <td colspan="4">
    367. 18250182015
    368. td>
    369. <td colspan="3">
    370. 2017-09-07
    371. td>
    372. tr>
    373. <tr>
    374. <td>
    375. 8
    376. td>
    377. <td colspan="4">
    378. 015105055999
    379. td>
    380. <td colspan="3">
    381. 2017-06-29
    382. td>
    383. tr>
    384. table>
    385. <br/>
    386. <div class="title-style2">
    387. (二)居住信息
    388. div>
    389. <table align="center">
    390. <tr class="thead">
    391. <td>
    392. 编号
    393. td>
    394. <td>
    395. 居住地址
    396. td>
    397. <td>
    398. 住宅电话
    399. td>
    400. <td>
    401. 居住状况
    402. td>
    403. <td>
    404. 信息更新日期
    405. td>
    406. tr>
    407. <tr>
    408. <td>
    409. 1
    410. td>
    411. <td>
    412. 地址1
    413. td>
    414. <td>
    415. --
    416. td>
    417. <td>
    418. 未知
    419. td>
    420. <td>
    421. 2019-07-18
    422. td>
    423. tr>
    424. <tr>
    425. <td>
    426. 2
    427. td>
    428. <td>
    429. 地址2
    430. td>
    431. <td>
    432. --
    433. td>
    434. <td>
    435. 未知
    436. td>
    437. <td>
    438. 2019-06-25
    439. td>
    440. tr>
    441. <tr>
    442. <td>
    443. 3
    444. td>
    445. <td>
    446. 地址3
    447. td>
    448. <td>
    449. --
    450. td>
    451. <td>
    452. 未知
    453. td>
    454. <td>
    455. 2019-04-26
    456. td>
    457. tr>
    458. <tr>
    459. <td>
    460. 4
    461. td>
    462. <td>
    463. 地址4
    464. td>
    465. <td>
    466. --
    467. td>
    468. <td>
    469. 未知
    470. td>
    471. <td>
    472. 2019-01-26
    473. td>
    474. tr>
    475. <tr>
    476. <td>
    477. 5
    478. td>
    479. <td>
    480. --
    481. td>
    482. <td>
    483. --
    484. td>
    485. <td>
    486. 未知
    487. td>
    488. <td>
    489. 2018-11-14
    490. td>
    491. tr>
    492. <tr>
    493. <td>
    494. 6
    495. td>
    496. <td>
    497. 福建省福州市平潭县苏澳镇斗魁村斗魁58号
    498. td>
    499. <td>
    500. --
    501. td>
    502. <td>
    503. 未知
    504. td>
    505. <td>
    506. 2018-10-18
    507. td>
    508. tr>
    509. <tr>
    510. <td>
    511. 7
    512. td>
    513. <td>
    514. 福建省福州市平潭县苏沃镇斗魁村斗魁58号
    515. td>
    516. <td>
    517. 0591-23106098
    518. td>
    519. <td>
    520. 其他
    521. td>
    522. <td>
    523. 2018-06-09
    524. td>
    525. tr>
    526. <tr>
    527. <td>
    528. 8
    529. td>
    530. <td>
    531. 福州市
    532. td>
    533. <td>
    534. --
    535. td>
    536. <td>
    537. 未知
    538. td>
    539. <td>
    540. 2018-05-24
    541. td>
    542. tr>
    543. <tr>
    544. <td>
    545. 9
    546. td>
    547. <td>
    548. 福建省福州市仓山区金山融信西班牙8—102
    549. td>
    550. <td>
    551. --
    552. td>
    553. <td>
    554. 亲属楼宇
    555. td>
    556. <td>
    557. 2017-09-25
    558. td>
    559. tr>
    560. table>
    561. <br/>
    562. div>
    563. <br/>
    564. <div align="center" class="Noprint">
    565. <hr align="center" width="70%" size="1" noshade=""/><input type="button" value="打印信用报告" onclick="javascript:printPage();"/><br/>
    566. div>
    567. <br/><br/><script type="text/javascript"> window.onload=function() { //禁止复制 document.oncopy = function () { return false; }; //禁止粘贴 document.onpaste = function () { return false; }; //禁止剪切 document.oncut = function () { return false; }; //禁止右键菜单 document.oncontextmenu = function () { return false; }; //禁止文本选择 document.onselectstart = function () { return false; }; };script>
    568. body>
    569. html>

    3.java代码实现

    比如说我们想删掉某一个div  可以根据div的id class等进行操作处理

    1. public static void main(String[] args) throws IOException {
    2. String filePath = "/Users/xxxx/Downloads/a.html";
    3. File file = new File(filePath);
    4. // 解析HTML文本
    5. Document document = Jsoup.parse(file, "UTF-8");
    6. // 选择要移除的div元素(可以根据id、class或其他属性来选择)
    7. Elements divsToRemove = document.select("div#Header");
    8. Element table = divsToRemove.select("table").get(1);
    9. if (table != null) {
    10. Element rowToDelete = table.select("tr").get(0); // 获取第一行(索引从0开始)
    11. Element rowToDelete2 = table.select("tr").get(1); // 获取第二行(索引从0开始)
    12. // 删除表格行
    13. rowToDelete.remove();
    14. rowToDelete2.remove();
    15. }
    16. Elements divsToRemove2 = document.select("div#PersonalInfo");
    17. divsToRemove2.remove();
    18. // 输出更新后的HTML文本
    19. String updatedHtml = document.outerHtml();
    20. System.out.println(updatedHtml);
    21. }

    根据class删除代码示例:

    1. import org.jsoup.Jsoup;
    2. import org.jsoup.nodes.Document;
    3. import org.jsoup.nodes.Element;
    4. import org.jsoup.select.Elements;
    5. public class RemoveDivsByClass {
    6. public static void main(String[] args) {
    7. // 输入的HTML文本
    8. String htmlText = "

      子元素1

      子元素2

      子元素3

      "
      ;
    9. // 解析HTML文本
    10. Document document = Jsoup.parse(htmlText);
    11. // 查找特定的
      元素(这里使用id="content"作为示例)
    12. Element divElement = document.select("div#content").first();
    13. if (divElement != null) {
    14. // 查找包含特定class属性值的子
      元素并删除
    15. Elements divsToDelete = divElement.select("div.delete-me");
    16. divsToDelete.remove();
    17. }
    18. // 输出更新后的HTML文本
    19. String updatedHtml = document.outerHtml();
    20. System.out.println(updatedHtml);
    21. }
    22. }

  • 相关阅读:
    【无标题】
    宏macro
    java子类向父类转型再转回子类
    收银台——Web自动化测试
    声声入耳:音频新体验
    强化学习笔记
    nlp中的对抗训练比较
    什么是运营商精准大数据?又有什么作用?
    jemter ramp-up
    MySQL 备份和恢复
  • 原文地址:https://blog.csdn.net/Rice_kil/article/details/134159816