当前位置: 首页 > 知识库问答 >
问题:

从JSoup选择器中筛选出格式标记

田博易
2023-03-14

JSoup在这里。我有以下我试图解析的超文本标记语言:

<html><head>
<title>My Soup Materials</title>
<!--mstheme--><link rel="stylesheet" type="text/css" href="../../_themes/ice/ice1011.css"><meta name="Microsoft Theme" content="ice 1011, default">
</head>
<body><center><table width="92%"><tbody>
<tr>
<td><h2>My Soup Materials</h2>

<table width="100%%" cellspacing="0" cellpadding="0">

<tbody>
<tr>
<td align="left"><b>Origin:</b> Belgium</td>
<td align="left"><b>Count:</b> 2 foos</td>
</tr>

<tr>
<td align="left"><b>Supplier:</b> </td>
<td align="left"><b>Must Burninate:</b> Yes</td>
</tr>

<tr>
<td align="left"><b>Type:</b> Fizzbuzz</td>
<td align="left"><b>Add Afterwards:</b> No</td>
</tr>

</tbody>
</table>
<br>
<b><u>Notes</b></u><br>Drink more ovaltine</td>
</tr>

</tbody>
</table>
</center></body>
</html>

不幸的是,它的格式有点不正确(在

我有以下Java模型/POJO:

@Data // lombok; adds ctors, getters, setters, etc.
public class Material {
  private String name;
  private String origin;
  private String count;
  private String supplier;
  private Boolean burninate;
  private String type;
  private Boolean addAfterwards;
}

我正试图让JSoup解析这个HTML,并从解析中提供一个Material实例。

获取

Material material = new Material();

Elements rows = document.select("table").select("tr");
for (Element row : rows) {

    // row 1: origin & count
    Elements cols = row.select("td");
    for (Element col : cols) {
        material.setOrigin(???);
        material.setCount(???);
    }

}

所以我可以得到每个

<td align="left"><b>Origin:</b> Belgium</td>

因此,第一个代码的col.text()


共有1个答案

彭坚壁
2023-03-14
匿名用户

我想你在找tdNode。ownText()。还有一个简单的text(),但正如文档所述,它将节点及其所有子节点的所有文本节点合并在一起,并对它们进行规范化。换句话说,tdNode。text()为您提供字符串“原产地:比利时”<代码>tdNode。ownText()只提供了“比利时”tdNode。儿童(0)。ownText()只获取源代码:。

您还可以使用wholeText(),这是非规范化的,但我认为您需要在这里进行规范化(主要是去除空白)。

 类似资料:
  • 主要内容:Jsoup 选择器 语法,Jsoup 选择器 说明,Jsoup 选择器 示例以下示例将展示在将 HTML 字符串解析为 Document 对象后选择器方法的使用。jsoup 支持类似于 CSS 选择器的选择器。 Jsoup 选择器 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 字符串。 sampleDiv : 元素对象表示由 id“sampleDiv”标识的 html 节点元素。

  • 下列的选项会根据你在第一步选择的文件格式而有所不同。 字段名行 Navicat 标识哪一行为字段名。 数据列 Navicat 在哪一行开始和停止读取实际数据。 【注意】如果在文件中没有字段名,请取消勾选字段名行选项。 日期格式 指定日期的格式。 四位数年份 若要以四位数显示年份,可勾选这个选项。 日期分隔符 指定日期的分隔符。 时间分隔符 指定时间的分隔符。 小数点符号 指定小数数值的小数点分隔符

  • 本文向大家介绍Jsoup 使用CSS选择器选择元素,包括了Jsoup 使用CSS选择器选择元素的使用技巧和注意事项,需要的朋友参考一下 示例 您可以在此处找到支持的选择器的详细概述。

  • 我正在尝试使用JSoup从网站上刮取一些内容。以下是我感兴趣的页面中的一些HTML内容示例: 我有兴趣获得页面中所有的列表(所以"Fizz","Buzz","Foo"和"Bar")。但是我不能只查询,因为他们到处都在使用类来装饰许多不同的元素。具体来说,我需要存在于元素中的所有。请注意,pbks可以包含0个pgs,pgs可以包含0个热词,热词可以包含1个其他热词。我有以下代码: 运行该代码将生成以

  • 我最近尝试使用JSoup来解析HTML文档,我在JSoup上做了一遍turrorious,发现select-Method可能就是我要找的。 我试图完成的是找到html文档中拥有某个类的所有元素。为了测试这一点,我在amazon的网页上尝试了这一点(想法:找到所有有特定优惠的交易)。 因此,我检查了web页面,看看正在使用哪些类和ID,然后尝试将其集成到一个小代码段中。在本例中,我找到了follwi

  • 我想提取一个文本后,每个标签使用jSoup。有什么方法可以直接选择它,还是我必须执行。