如何使用Java从网页中读取文本?

时间:2012-03-22 15:48:19

标签: java

我想从网页上阅读文字。我不想获取网页的HTML代码。我找到了这段代码:

    try {
        // Create a URL for the desired page
        URL url = new URL("http://www.uefa.com/uefa/aboutuefa/organisation/congress/news/newsid=1772321.html#uefa+moving+with+tide+history");       

        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            str = in.readLine().toString();
            System.out.println(str);
            // str is one line of text; readLine() strips the newline character(s)
        }
        in.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }

但是这段代码给了我网页的HTML代码。我想在此页面中获取整个文本。我怎么能用Java做到这一点?

4 个答案:

答案 0 :(得分:15)

您可能需要查看jsoup

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html); 
String text = doc.body().text(); // "An example link"

此示例是其网站上的一个摘录。

答案 1 :(得分:4)

使用JSoup

您将能够使用css样式选择器解析内容。

在此示例中,您可以尝试

Document doc = Jsoup.connect("http://www.uefa.com/uefa/aboutuefa/organisation/congress/news/newsid=1772321.html#uefa+moving+with+tide+history").get(); 
String textContents = doc.select(".newsText").first().text();

答案 2 :(得分:0)

您必须获取当前代码所获得的内容,然后解析它并查找包含所需文本的标记。萨克斯解析器非常适合这项工作。

或者,如果它不是您想要的特定文本,只需删除所有标记,这样您就只剩下文本了。我想你可以使用正则表达式。

答案 3 :(得分:0)

您也可以使用HtmlCleaner jar。 以下是代码。

HtmlCleaner cleaner = new HtmlCleaner();
TagNode node = cleaner.clean( url );

System.out.println( node.getText().toString() );