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'>使用我搜索的正则表达式和indexOf:
<input type='hidden' name='k' value=发现它在位置4861,现在我需要获取从4862到4893的所有东西,这个值: nnhMTGbb2z5eryuksFGns9tt0EEjqBX8,并将其放入一个字符串中。
我一定是错过了一些我觉得很简单的东西。我该怎么办?
发布于 2013-05-21 03:17:50
众所周知,正则表达式不适合解析HTML。如果我是你,我会使用一个用来解析超文本标记的库,比如:What are the pros and cons of the leading Java HTML parsers?,考虑一下,type可以改为在标记的末尾,而不是在开始。HTML仍然有效,但是regex/indexof现在没有用了。这些可能是你不想考虑的问题。
但是如果你坚持,你可以使用StringUtils.lastIndexOf
发布于 2013-05-21 03:18:06
考虑使用JSoup解析html
https://stackoverflow.com/questions/16656696
复制相似问题