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 并将其放入一个字符串中。
我必须错过一些简单的感觉。我该怎么办?
答案 0 :(得分:2)
正则表达式解析HTML非常糟糕。如果我是你,我会使用一个用于解析html的库,就像这个问题中的那些:What are the pros and cons of the leading Java HTML parsers?例如,考虑type
可以更改为在标签的末尾而不是在开始。 HTML仍然有效,但你的正则表达式/ indexof现在将无用。这些可能是您不想考虑的问题。
但如果你坚持,你可以使用StringUtils.lastIndexOf
答案 1 :(得分:1)
考虑使用JSoup来解析html