当前位置: 代码迷 >> java >> 提取 HTML 中的文本
标签 JSOUP
  详细解决方案

提取 HTML 中的文本
标签 JSOUP

热度:77   发布时间:2023-07-25 19:24:58.0

我正在编写一个 JAVA 程序来提取项目的 HTML 数据。 这是 HTML 代码

 <td align="left" valign="top" class="style3">
        PC / Van<br>$14 (Mon-Fri, excl PH)
        <br>
        $18 (Sat, Sun & PH)<br><br>$70/Day(Mon-Fri, excl PH: Entry - 24:00)   
        <br>
        $100/day (Sat, Sun & PH: Entry - 24:00)
 </td></tr>

以下是我提取的JAVA代码。

 String connect1 = url1.toString();
 Document doc1 = Jsoup.connect(connect1).get();


        // get all links
        Elements type1 = doc1.select("[class=\"style3\"]");     

        int size = type1.size();

            try {       
                String text =type1.first.text();
                System.out.println(text);

                } catch (Exception e) {
                e.printStackTrace();

            }   

我得到的输出是

PC / Van$14 (Mon-Fri, excl PH)$18 (Sat, Sun & PH)$70/Day(Mon-Fri, excl PH: Entry - 24:00)$100/day (Sat, Sun & PH: Entry - 24:00)

如何将它们从 <br> 标签中分离出来?

您可以将所有<br>标签替换为\\n符号,代码示例如下所示:

Document doc1 = Jsoup.parse(s);
Elements type1 = doc1.select("[class=\"style3\"]");
try {       
    String text =type1.first().html();
    text = text.replaceAll("<br>", "\n");
    System.out.println(text);
} catch (Exception e) {
    e.printStackTrace();
} 

或使用<br>标签将文本拆分为字符串数组

Document doc1 = Jsoup.parse(s);
Elements type1 = doc1.select("[class=\"style3\"]");
try {       
    String text =type1.first().html();
    String[] textSplitResult = text.split("<br>");
    if (null != textSplitResult) {
         for (String t : textSplitResult) {
             System.out.println(t);
         }
    }
} catch (Exception e) {
    e.printStackTrace();
} 

或使用 java8 lambda 输出结果

String text =type1.first().html();
String[] textSplitResult = text.split("<br>");
if (null != textSplitResult) {
    Arrays.stream(textSplitResult).peek((x) -> System.out.println(x)).count();
    //or Arrays.stream(textSplitResult).peek(System.out::println).count();
} 

执行结果:

PC / Van
$14 (Mon-Fri, excl PH)
$18 (Sat, Sun &amp; PH)

$70/Day(Mon-Fri, excl PH: Entry - 24:00)
$100/day (Sat, Sun &amp; PH: Entry - 24:00)

根据这个问题

String text =type1.first.text();

String[] textArr = text.split("<br>");
  相关解决方案