从HTML页面中获取特定行并放入String

时间:2013-09-05 19:16:09

标签: java regex jsoup

我正在尝试从此网页解析html的特定区域:

http://en.wikipedia.org/w/api.php?action=parse&page=Ringo_Starr&prop=text&section=0&format=txtfm&disablepp&redirects

[请注意,这不是源页面,它显示html标签,但我对此页面的实际来源感兴趣(Ctrl + u)]。

具体来说,我希望将所有行开头:

<span style="color:blue;">&lt;p&gt;</span>

成一个字符串。

enter image description here

以下是我试图解决的问题 - 但我似乎离开了:

      Document doc = Jsoup.connect("http://en.wikipedia.org/w/api.php?action=parse&page=Ringo_Starr&prop=text&section=0&format=txtfm&disablepp&redirects").get();   
      Elements elements = doc.select("span");
      for (Element e : elements) {
           if(e.text().equals("&lt;p&gt;")){
               System.out.println("now get that whole line");
           }
     }

注意:我在这里使用jsoup - 但直接正则表达式会更有效吗?

2 个答案:

答案 0 :(得分:1)

直接的正则表达式可能是一个更好的主意。试试这个开头:

Pattern pat=Pattern.compile("^<span style=\"color:blue;\">&lt;p&gt;</span>.+&");

在这里,^开始行,<span style="color:blue;">&lt;p&gt;</span>按字面匹配,然后我们有一个或多个non-line-terminator characters

  

正则表达式。匹配除行终止符以外的任何字符,除非指定了DOTALL标志。

$指定行尾。

答案 1 :(得分:0)

难道你不能写

System.out.println(e.nextElementSibling().text())

你还必须检查

e.attr("style").equals("color:blue;")