如何使用jSoup解析html文件?

问题描述 投票:0回答:1

我在一个文件夹中有多个文件需要解析。我的最终目标是提取一个纯文本文件,该文件包含任何div中具有id属性以“ part_”开头的div的文件。我对jSoup并不熟悉。这是我的html文件之一的示例:

<html>
<head>...</head>
<body>
<div id="document">
    <p>..<p>
    <div id=part_1>  </div>
<div id=part_2> Part 2 : Security measures </div>
<div id=part_3> 
         Part 3
    <p>security To review  </p>
    <ul> <li> ...</li> <li> ...</li></ul>
    <p>measures to adjust </p>  

</div>

我想用“ id = part_”提取所有

。正如我们所看到的,它包含文本和其他html标记,我不知道该如何处理该传闻。我写了以下代码,但显然我迷路了:
    Document document = Jsoup.parse( new File( "Folder/2.html" ) , "utf-8" );
    System.out.println(document.title());

    Elements divs = document.select("div");
    for (Element div : divs) {
        String divid = div.attr("id").toString();
         if (divid.equals("part_201")) {
                       System.out.println(div.text());
         }

Ps;我正在处理200多个html文件,最后我应该拥有所有纯文本的.txt文件。

我在一个文件夹中有多个文件需要解析。我的最终目标是提取一个纯文本文件,该文件包含任何div中具有id属性以“ part_”开头的div中的任何内容。我不熟悉...

java parsing jsoup html-parsing html-to-text
1个回答
0
投票

我认为您正在使此过程变得比所需的复杂。 Jsoup实际上很直观,也很简单:

要选择所有具有id属性和以“ part”开头的值的div,请使用:doc.select("div[id^=part]");

public static void main(String[] args) {
    String html = "<html>\n"
            + "<head>...</head>\n"
            + "<body>\n"
            + "<div id=\"document\">\n"
            + "    <p>..<p>\n"
            + "    <div id=part_1>  </div>\n"
            + "<div id=part_2> Part 2 : Security measures </div>\n"
            + "<div id=part_3> \n"
            + "         Part 3\n"
            + "    <p>security To review  </p>\n"
            + "    <ul> <li> ...</li> <li> ...</li></ul>\n"
            + "    <p>measures to adjust </p>  \n"
            + "\n"
            + "</div>";

    Document doc = Jsoup.parse(html);
    Elements myDivs = doc.select("div[id^=part]");
    myDivs.forEach(System.out::println);
}

Jsoup cookbook

请参见Selector API reference

© www.soinside.com 2019 - 2024. All rights reserved.