当前位置: 首页 > 知识库问答 >
问题:

Jsoup从两个标记之间的html获取数据

牟飞沉
2023-03-14

我正在从事一个个人项目,希望解析这个html并从中检索信息。

基本上,我希望获得
标记中给出的所有信息,为此,我在java中使用JSOUP。

<html>
  </head>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="">
                            <tbody>
                              <tr style="">
                                <td>
                                  <p class="MsoNormal">
                                    <span style="">
                                      <span style="font-size:9.0pt; font-family:"Arial",sans-serif">
                                        <br>
                                        <br>Information: 
                                        <br>
                                        <br>Legal Business Name
                                        <br>Asfdsf
                                        <br>
                                        <br>Phone
                                        <br>(718) 43543
                                        <br>
                                        <br>Principle Name 1
                                        <br>afdsgsfgsg df
                                        <br>
                                        <br>Bus Street Address
                                        <br>sdfdsf
                                        <br>
                                        <br>Bus City
                                        <br>sdfdsf
                                        <br>
                                        <br>Bus State
                                        <br>ny
                                        <br>
                                        <br>Bus Zip Code
                                        <br>4324324
                                        <br>
                                        <br>Email Address
                                        <br>dsfdsfds@xyz.com
                                        <br>
                                        <br>Tertiary Email Address
                                        <br>--- No answer ---
                                        <br>
                                        <br>Business Website Address
                                        <br>dsfdsf.com
                                        <br>
                                        <br>DBA info same as Business
                                        <br>
                                        <br>DBA information is same as Business.
                                        <br>
                                        <br>DBA Name
                                        <br>Awqeewd gdfg
                                        <br>
                                        <br>DBA Street Address
                                        <br>dsfdsf 3432 fdgdf
                                        <br>
                                        <br>DBA City
                                        <br>NORTH
                                        <br>
                                        <br>Attachments:
                                      </span>
                                    </span>
                                  </p>
        <p class="MsoNormal">
          <span style=""> 
          </span>
        </p>
      </div>
      </body>
    </html>

我使用这段代码来获取,但这是在一个段落中给出所有值。

Document doc = Jsoup.parse(htmlString);
    List<String> valueList = new ArrayList<>();
    Elements keyElements = doc.getElementsByTag("td");
    for (Element keyElement : keyElements) {
      String value = keyElement.text();
      // store in value list

}

我也试过了

doc.getElementsByTag("br");

但他的观点是空泛的。

有人能帮我以更好的方式获得这些数据吗?

共有3个答案

慕震博
2023-03-14

您可以使用此解决方案:


 Document.OutputSettings outputSettings = new Document.OutputSettings();
        outputSettings.prettyPrint(false);
        doc.outputSettings(outputSettings);
        doc.select("br").before("\\n");;
        doc.select("p").before("\\n");
        String str = doc.html().replaceAll("\\\\n", "\n");
        String strWithNewLines = Jsoup.clean(str, "", Safelist.none(), outputSettings);
        System.out.println(strWithNewLines);

许嘉福
2023-03-14

尝试

    Elements keyElements = doc.select("td");

或者

    Elements keyElements = doc.select("tr");
韩弘方
2023-03-14

它必须是getElementsByTagName。T.T

 类似资料:
  • 在像这样的网站上http://wikitravel.org/en/San_Francisco,诸如“Districts”、“Understand”、“Get in”等部分实际上并不包含HTML中的整个部分。节实际上只是标题中的跨类。正因为如此,我们不能简单地通过选择id来获取wiki文档的某些部分。 但是,是否可以收集两个标记之间的所有html?比如说我想要“四处走动”部分。我该如何发出一个选择器

  • 我试图获取提供的html(跨度)之间的数据(在本例中为31) 以下是原始代码(来自chrome中的inspect elements) 我有一个包含页面源代码的富文本框,下面是相同的代码,但是在富文本框的第51行: 我将如何做到这一点?我已经尝试了几种方法,但似乎都不适合我。 我试图从这一页检索点值:http://www.subxcess.com/sub4sub.php根据谁潜艇你的数量变化。

  • 嗨,我有一个html文件解析的场景。我正在使用jsoup解析html文件,解析后我想提取头标记(h1、h3、h4)。我用过医生。select()但它将只返回标题标记值,但我的要求是我应该提取h1到h3或h4之间的标记,反之亦然。 所以这里首先搜索html字符串是否包含任何H1,H3,H4。这里我们有h4,所以包括h4,它应该搜索下一个h1或h3,直到h3我们提取字符串并把它放在一个单独的html文

  • 问题内容: 我正在尝试获取2 h1标签之间的所有html。实际的任务是根据h1(heading 1)标签将html分成几帧。 感谢任何帮助。 谢谢苏尼尔 问题答案: 如果要获取和处理两个连续标签之间的所有元素,则可以处理同级对象。这是一些示例代码:

  • 所以我尝试从pretag获取数据,我设置doc连接到url选择pretag,结果出错了,我需要获取的数据按这里