gpt4 book ai didi

java - 现在,我怎样才能从屏幕上抓取这样的html行(使用java)?

转载 作者:行者123 更新时间:2023-12-01 15:15:14 27 4
gpt4 key购买 nike

我正在尝试筛选抓取一个 html 页面,以便我可以从中提取所需的有值(value)的数据并将其放入文本文件中。到目前为止,一切进展顺利,直到我在 html 页面中遇到了这个:

<td> <b>In inventory</b>: 0.3 &#107;&#103;<br /><b>Equipped</b>: -4.5&#160;kg

页面 html 代码中的上述行通常会有所不同。因此,它需要找到一种方法来扫描线(无论它包含什么)以获取权重(在本例中为 0.3 -4.5)并将这些数据存储到 2 个单独的 double 中:

inventoryWeight = 0.3
EquipmentWeight = -4.5

我希望使用纯java来完成此操作;如果需要,请随时通知我可以在我的 java 应用程序中执行的任何第三方程序来实现此目的(但如果是这样,请生动地解释)。

非常感谢!

最佳答案

RegEx通常是抓取文本的一个很好的解决方案。括号表示“捕获组”,这些组被存储起来,然后可以使用 Matcher.group() 进行访问。 [-.\d]+ 匹配由一位或多位数字 (0-9)、句点和连字符组成的任何内容。 .* 匹配任何内容(但有时不匹配换行符)。在这里它只是用来本质上“扔掉”你不关心的一切。

import java.util.regex.*;

public class Foo {
public static void main(String[] args) {
String regex = ".*inventory<\\/b>: ([-.\\d]+).*Equipped<\\/b>: ([-.\\d]+).*";
String text = "<td> <b>In inventory</b>: 0.3 &#107;&#103;<br /><b>Equipped</b>: -4.5&#160;kg";

// Look for a match
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);

// Get the matched text
if (matcher.matches()) {
String inventoryWeight = matcher.group(1);
String equippedWeight = matcher.group(2);

System.out.println("Inventory weight: " + inventoryWeight);
System.out.println("Equipped weight: " + equippedWeight);
} else {
System.out.println("No match!");
}
}
}

关于java - 现在,我怎样才能从屏幕上抓取这样的html行(使用java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712185/

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