我想解析一个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): ************************************
如果想要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
我有这个代码: 我已经尝试过这个,但不工作: