gpt4 book ai didi

java - 使用Java抓取网页数据

转载 作者:行者123 更新时间:2023-11-29 04:02:19 25 4
gpt4 key购买 nike

我现在正在尝试使用 Java 实现一个简单的 HTML 网页抓取工具。现在我遇到了一个小问题。假设我有以下 HTML 片段。

<div id="sr-h-left" class="sr-comp">
<a class="link-gray-underline" id="compare_header" rel="nofollow" href="javascript:i18nCompareProd('/serv/main/buyer/ProductCompare.jsp?nxtg=41980a1c051f-0942A6ADCF43B802');">
<span style="cursor: pointer;" class="sr-h-o">Compare</span>
</a>
</div>
<div id="sr-h-right" class="sr-summary">
<div id="sr-num-results">
<div class="sr-h-o-r">Showing 1 - 30 of 1,439 matches,

我感兴趣的数据是底部显示的整数 1.439。我只是想知道如何从 HTML 中获取该整数。我现在考虑用正则表达式,然后用java.util.Pattern帮忙把数据取出来,但是还不是很清楚这个过程。如果你们能给我一些关于这个数据抓取的提示或想法,我将不胜感激。非常感谢。

最佳答案

正则表达式可能是最好的方法。像这样的东西:

Pattern p = Pattern.compile("Showing [0-9,]+ - [0-9,]+ of ([0-9,]+) matches");
Matcher m = p.matches(scrapedHTML);
if(m.matches()) {
int num = Integer.parseInt(m.group(1).replaceAll(",", ""));
// num == 1439
}

我不确定您所说的“过程”是什么意思,但代码的作用如下:p 是与“Showing...”行匹配的正则表达式模式。 m 是将该模式应用于抓取的 HTML 的结果。如果 m.matches() 为真,则表示模式与 HTML 匹配,并且 m.group(1) 将是第一个正则表达式组(括号中的表达式)模式是 ([0-9,]+),它匹配一串数字和逗号,因此它将是“1,459”。 replaceAll() 调用将其转换为“1459”,而 Integer.parseInt() 将其转换为整数 1459

关于java - 使用Java抓取网页数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615727/

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