我正在尝试从此网页解析html的特定区域:
http://en.wikipedia.org/w/api.php?action=parse&page=Ringo_Starr&prop=text§ion=0&format=txtfm&disablepp&redirects
[请注意,这不是源页面,它显示html标签,但我对此页面的实际来源感兴趣(Ctrl + u)]。
具体来说,我希望将所有行开头:
<span style="color:blue;"><p></span>
成一个字符串。
以下是我试图解决的问题 - 但我似乎离开了:
Document doc = Jsoup.connect("http://en.wikipedia.org/w/api.php?action=parse&page=Ringo_Starr&prop=text§ion=0&format=txtfm&disablepp&redirects").get();
Elements elements = doc.select("span");
for (Element e : elements) {
if(e.text().equals("<p>")){
System.out.println("now get that whole line");
}
}
注意:我在这里使用jsoup - 但直接正则表达式会更有效吗?
答案 0 :(得分:1)
直接的正则表达式可能是一个更好的主意。试试这个开头:
Pattern pat=Pattern.compile("^<span style=\"color:blue;\"><p></span>.+&");
在这里,^
开始行,<span style="color:blue;"><p></span>
按字面匹配,然后我们有一个或多个non-line-terminator characters:
正则表达式。匹配除行终止符以外的任何字符,除非指定了DOTALL标志。
,$
指定行尾。
答案 1 :(得分:0)
难道你不能写
System.out.println(e.nextElementSibling().text())
你还必须检查
e.attr("style").equals("color:blue;")