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

解析JSOUP表

靳睿
2023-03-14

我想解析一个HTML表,但我不明白如何获得值。我有这张桌子:

<table class="aircraftInfoGrid">
            <tbody>
              <tr class="first">
                <td class="iconContainer">
                  <span class="icon aircraft"></span>
                </td>
                <td colspan="2">
                  Aircraft<span class="right" id="aircraftIcaoVal">(A320)</span><br>
                  <span id="aircraftVal" class="strong">Airbus A320-214</span>
                </td>
              </tr>
              <tr>
                <td class="iconContainer"></td>
                <td colspan="2">
                  Registration<span class="right" id="hexVal">(4CA212)</span><br>
                  <span id="registrationVal" class="strong"><a class="regLink" data-reg="EIDEB">EI-DEB</a></span>
                </td>
              </tr>
              <tr>
                <td class="iconContainer">
                  <span class="icon cloud"></span>
                </td>
                <td>
                  Altitude<br>
                  <span id="altitudeVal" class="strong hasTooltip" data-tooltip-align="left" data-tooltip-value="2,438 m">8,000 ft</span>
                </td>
                <td>
                  Vertical Speed<br>
                  <span id="vspdVal" class="strong">0 fpm</span>
                </td>
              </tr>
              <tr>
                <td class="iconContainer"></td>
                <td>
                  Speed<br>
                  <span id="speedVal" class="strong hasTooltip" data-tooltip-align="left" data-tooltip-value="469 km/h, 291 mph">253 kt</span>
                </td>
                <td>
                  Track<br>
                  <span id="trackVal" class="strong">267°</span>
                </td>
              </tr>
              <tr>
                <td class="iconContainer">
                  <span class="icon satellite"></span>
                </td>
                <td>
                  Latitude<br>
                  <span id="latVal" class="strong">51.593</span>
                </td>
                <td>
                  Longitude<br>
                  <span id="lonVal" class="strong">-0.5887</span>
                </td>
              </tr>
              <tr>
                <td class="iconContainer"></td>
                <td>
                  Radar<br>
                  <span id="radarVal" class="strong">N-EGLM2</span>
                </td>
                <td>
                  Squawk<br>
                  <span id="squawkVal" class="strong">7651</span>
                </td>
              </tr>
            </tbody>
          </table>
doc = Jsoup.connect("http://x.com/EIN1C6/367d800").timeout(10*1000).get();
org.jsoup.nodes.Element tabella = doc.getElementsByClass("aircraftInfoGrid").first();

Iterator<org.jsoup.nodes.Element> iterator = tabella.select("td").iterator();
while(iterator.hasNext()){   
    iterator.next().text();
    System.out.println("TITLE: "+iterator.next().text());
}
    05-24 07:03:18.270: I/System.out(2088): TITLE: Aircraft
05-24 07:03:18.270: I/System.out(2088): TITLE: Registration
05-24 07:03:18.280: I/System.out(2088): TITLE: Altitude
05-24 07:03:18.290: I/System.out(2088): TITLE: 
05-24 07:03:18.290: I/System.out(2088): TITLE: Track
05-24 07:03:18.310: I/System.out(2088): TITLE: Latitude
05-24 07:03:18.310: I/System.out(2088): TITLE: 
05-24 07:03:18.320: I/System.out(2088): TITLE: Squawk

你能为我杀一儆百吗?我要分析此表得所有值...提前谢谢!

编辑:SPAN值:

    05-24 11:08:49.240: I/System.out(3679): TD Value : Aircraft
05-24 11:08:49.240: I/System.out(3679): TD colspan : 2
05-24 11:08:49.240: I/System.out(3679):     SPAN Value : 
05-24 11:08:49.240: I/System.out(3679):     SPAN class : right
05-24 11:08:49.240: I/System.out(3679):     SPAN id : aircraftIcaoVal
05-24 11:08:49.240: I/System.out(3679):     SPAN Value : 
05-24 11:08:49.240: I/System.out(3679):     SPAN id : aircraftVal
05-24 11:08:49.240: I/System.out(3679):     SPAN class : strong
05-24 11:08:49.240: I/System.out(3679): ************************************

共有1个答案

薛宇
2023-03-14

如果想要span详细信息,只需嵌套for循环即可。例如,下面的程序打印出此表的所有值。我只是将gien html复制到一个文件中,这样程序就可以从一个文件中读取。你可以把它改成你的URL。

import java.io.File;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Attribute;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;


public class JsoupParser {

    public static void main(String[] args) throws Exception {
        File input = new File("t.html");

        Document doc = Jsoup.parse(input, "UTF-8");

        int index = 0;
        for (Element td : doc.select("td")) {
            System.out.println("************************************");
            System.out.println("Row " + (++index));
            System.out.println("************************************");
            printValuesAndAttributes("TD", td);
            for(Element span : td.select("span")){
                printValuesAndAttributes("\tSPAN", span);
            }
        }
    }

    private static void printValuesAndAttributes(String prefix, Element el) {
        System.out.println(prefix +" Value : " + el.text());
        for(Attribute attr : el.attributes()){
            System.out.println(prefix + " " + attr.getKey() + " : " + attr.getValue());
        }
    }

}

如果您想要整个span标记html,请使用toString方法;如果您想要该值,请像上面一样使用el.text()

for (Element span : doc.select("td span")) {
    System.out.println(span);
}
 类似资料:
  • 问题内容: 在页面中,我想选择一个变量的值。以下是页面的摘要。 我的目的是使用来从此页面读取变量的值。有可能吗?如果是,那怎么办? 问题答案: 由于jsoup不是javascript库,因此有两种方法可以解决此问题: A.使用JavaScript库 优点: 全面的Javascript支持 缺点: 附加的天秤/依赖项 B.使用Jsoup +手动解析 优点: 无需额外的库 足以完成简单的任务 缺点:

  • 我正在尝试使用JSOUP解析来自特定网站的信息。到目前为止,我可以解析和显示单行,因为网站有很多html,我对此很陌生,我想知道有没有一种方法可以解析包含单词“fixturerow”的页面上的所有表行。 下面是我的解析器代码: 谢谢你抽出时间!

  • 我需要的是在第二个中获取第二个 的文本,并对表中的每一组 标记执行此操作。

  • 主要内容:Jsoup 解析HTML正文 语法,Jsoup 解析HTML正文 说明,Jsoup 解析HTML正文 示例以下示例将展示将 HTML 片段字符串解析为 Element 对象作为 html 正文。 Jsoup 解析HTML正文 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 片段字符串。 body : 表示文档正文元素的子元素,等效于 document.getElementsByTag("body"

  • 主要内容:Jsoup 解析字符串 语法,Jsoup 解析字符串 说明,Jsoup 解析字符串 示例以下示例将展示将 HTML 字符串解析为 Document 对象。 Jsoup 解析字符串 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 字符串。 Jsoup 解析字符串 说明 parse(String html) 方法将输入的 HTML 解析为一个新的 Document。该文档对象可用于遍历和获取 htm

  • 我有这个代码: 我已经尝试过这个,但不工作: