从 HTML Java 中提取文本jsoup

我正在开发一个程序,该程序下载HTML页面,然后选择一些信息并将其写入另一个文件。

我想提取段落标签之间的信息,但我只能得到段落的一行。我的代码如下;

FileReader fileReader = new FileReader(file);
BufferedReader buffRd = new BufferedReader(fileReader);
BufferedWriter out = new BufferedWriter(new FileWriter(newFile.txt));
String s;

while ((s = br.readLine()) !=null) {
    if(s.contains("<p>")) {
        try {
            out.write(s);
        } catch (IOException e) {
        }
    }
}

我试图添加另一个while循环,这将告诉程序继续写入文件,直到行包含标签,通过说;</p>

while ((s = br.readLine()) !=null) {
    if(s.contains("<p>")) {
        while(!s.contains("</p>") {
            try {
                out.write(s);
            } catch (IOException e) {
            }
        }
    }
}

但这行不通。有人可以帮忙吗?


答案 1

jsoup

我真正喜欢使用的另一个html解析器是jsoup。您可以在2行代码中获取所有元素。<p>

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements ps = doc.select("p");

然后将其写出到另一行中的文件中

out.write(ps.text());  //it will append all of the p elements together in one long string

或者,如果您希望它们在单独的行上,则可以循环访问元素并单独写出它们。


答案 2

jericho是几个可能的html解析器之一,可以使这项任务既简单又安全。