我无法找到任何关于我需要为Java字符串做的解析的文档。
所以,这不像是用线条或逗号或其他东西解析那么简单,它有点复杂。
我的程序抓取了网页的来源,我需要解析它以查看视图标记的内容。
解析它之间的内容
<input name="sid" type="hidden" value="
和
" />
所以,如果网页上有这个字符串:
<input name="sid" type="hidden" value="stringvaluehere" />
输出
stringvaluehere
有人可以帮忙吗?我根本找不到任何关于这类文件的文档,并且在其他来源询问并没有帮助。
谢谢!
答案 0 :(得分:5)
如果你想解析HTML,我建议使用HTML解析器而不是使用String操作。将文档解析为String只是在遇到您不期望的奇怪输入时才会出现问题。
这个问题讨论了很好的潜在Java HTML解析器:Java HTML Parsing
答案 1 :(得分:5)
您可以使用库,例如JSoup。它通常比尝试手动解析DOM容易得多。
Document doc = Jsoup.connect("http://www.example.com").get();
Elements inputs = doc.select("input#sid");
for(Element input : inputs) {
System.out.println(input.attr("value"));
}
简单易用&amp;重要的是易于阅读。
答案 2 :(得分:1)
这有点沉重,有一个可能真的很酷且很糟糕的正则表达式可以做得更好,但是......
String value = "<input name=\"sid\" type=\"hidden\" value=\"stringvaluehere\" />";
value = value.substring(value.indexOf("value=\"") + "value=\"".length());
value = value.substring(0, value.indexOf("\""));
System.out.println(value);
打印stringvaluehere
<强>更新强>
另一种方法是将HTML文本视为XML,并使用XML解析器查找元素的属性。虽然听起来很复杂,但是FAR是一个更简单的解决方案,特别是如果你倾向于解析多个网页。
答案 3 :(得分:1)
如果页面是格式良好的XML,则可以使用XPATH查询语言来实现此目的。它比低级的正则表达式匹配更清晰。或者一些用于解析HTML的现有库。