gpt4 book ai didi

java - 如何使用正则表达式从html文档中提取标签的内容?

转载 作者:行者123 更新时间:2023-12-01 18:11:05 25 4
gpt4 key购买 nike

我有一份包含每个国家/地区数据的文档。每个表格行代表一个国家/地区:

<tr>
<td class="td-flag"><a href="/afghanistan"><img alt="Flag of Afghanistan" src="//flags.fmcdn.net/data/flags/mini/af.png" width="30" height="20" /></a></td>
<td class="td-country"><a href="/afghanistan">Afghanistan</a></td>
<td class="td-capital">Kabul</td>
<td class="td-population">25,500,100</td>
<td class="td-area">652,090&nbsp;km<sup>2</sup></td>
</tr>

我尝试提取:链接到国旗、国家名称、首都和人口,但首先我需要将每个表行插入 Vector分开,所以我需要提取每个 <tr>content</tr> 的内容.

问题:如何提取每个 <tr> 的内容在html文档中?我根本没有匹配项:

try {
BufferedReader br = new BufferedReader(new FileReader("./data/countries.txt"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + '\n');
}
br.close();

ArrayList<String> tableRows = new ArrayList<String>();
Pattern p = Pattern.compile(" <tr>(\\w+)</tr> ", Pattern.MULTILINE);
Matcher m = p.matcher(sb);
while (m.find()) {
System.out.println("match");//it never prints thus there are no matches
tableRows.add(m.group());
}
System.out.println(tableRows.size());//THE SIZE is 0
for (String tr : tableRows) {
System.out.println(tr);
}
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

有更简单的方法可以从 HTML 文件中提取数据,特别是:

正则表达式也可以工作,但比上述技术更容易出错。

++ 编辑++

  • XPath 示例

我必须承认,XPath 对我来说很新,所以下面的代码并不是最优化的,但它会让您快速了解它是如何工作的。您可以在浏览器的控制台中练习使用 XPath。打开 HTML 页面并使用 $x(EXPRESSION); 封装表达式。

$x("//tr/td[@class='td-flag']/a/@href") 将渲染:Array [ href="/afghanistan"]

  • jQuery 示例

如果您以前从未使用过 jQuery,您也可以在浏览器的控制台中使用它。它几乎是一个 JavaScript 库,其唯一目的是简化代码。

$(".td-flag a").href 将渲染 "file:///afghanistan"

我在上面的代码片段中只使用了一个 tr 元素,但显然你有更多 tr 元素,因此上面的表达式返回数组。另外,在表格元素上放置一个 ID 标签,以便轻松、安全地访问;-)

关于java - 如何使用正则表达式从html文档中提取<tr>标签的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com