0

1)在我的java程序中,它连接到一个网页并获取html页面源。
2) 然后继续将整个页面源转换为字符串 (htmlString)。
3) 我想在 html 源代码中获取一个值并将其放入一个字符串 (myString) 中。
4)我正在尝试使用 indexOf 并具有以下正则表达式,该正则表达式能够在我尝试获取的值开始之前找到位置:

System.out.println(htmlString.indexOf("<input name=\"k\" value=\"", 1));

这将返回 4861

5)我想打印出这些值并将它们存储到 indexOf 位置范围为 4862 - 4893 的字符串中。我似乎无法弄清楚如何做到这一点。

此外,每次刷新页面时,此 indexOf 范围 4862-4893 的值都会更改。否则,我将直接搜索该特定值。

我正在尝试做的基本示例:

HTML 源代码:

<input type='hidden' name='k' value='nnhMTGbb2z5eryuksFGns9tt0EEjqBX8'>

使用 regex 和 indexOf 我搜索:

<input type='hidden' name='k' value=

发现它在位置 4861,现在我需要从 4862-4893 中获取所有内容,这个值:nnhMTGbb2z5eryuksFGns9tt0EEjqBX8 并将其放入字符串中。

我一定错过了一些我觉得很简单的东西。我应该怎么办?

4

2 回答 2

2

正则表达式在解析 HTML 方面是出了名的糟糕。如果我是你,我会使用一个用于解析 html 的库,就像这个 SO 问题中的那样:领先的 Java HTML 解析器的优缺点是什么? 例如,考虑type可以将 更改为位于标签的末尾而不是开头。HTML 仍然有效,但您的 regex/indexof 现在将无用。这些可能是您不想考虑的问题。

但如果你坚持,你可以使用StringUtils.lastIndexOf

于 2013-05-20T19:17:49.870 回答
1

考虑使用JSoup解析html

于 2013-05-20T19:18:06.080 回答