我想从本网站的第一张表中获取信息 Link
这是我的代码
Document document = Jsoup.parse(DownloadPage("http://www.transtejo.pt/clientes/horarios" +
"-ligacoes-fluviais/ligacao-barreiro-terreiro-do-paco/#dias-uteis"));
Elements table = document.select("table.easy-table-creator:nth-child(1) tbody");
Elements trAll = table.select("tr");
//For the Table Hour
Elements tr_first = table.select("tr:nth-child(1)");
Element tr = tr_first.get(1);
Elements td = tr.getElementsByTag("td");
for(int i = 0; i < td.size(); i++) {
Log.d("TIME TABLE:"," " + td.get(i).text());
for(int i1 = 1; i1 < trAll.size(); i1++) {
Elements td_inside = trAll.get(i1).getElementsByTag("td");
Log.d("TD INSIDE:"," " + td_inside.get(i).text());
}
}
现在我能够获取信息,问题就是我从其他表中获取内容,因为所有表类名都相同而且我无法指定我需要的表,而且我也得到了IndexOutOfBoundsException
这是它的日志 Loglink
日志的类型我希望它是这样的: 小时(时间表),然后在这个小时,我想得到所有底线与该小时的分钟(TD INSIDE),然后移动到下一个小时(...)
渴望你的时间。
[编辑] 更好的日志示例 检查第一张表。
TIME TABLE: 05H
TD INSIDE: 15
TD INSIDE: 45
TIME TABLE: 06H
TD INSIDE: 15
TD INSIDE: 35
TD INSIDE: 45
TD INSIDE: 55
TIME TABLE: 07H
TD INSIDE: 05
TD INSIDE: 15
TD INSIDE: 20
TD INSIDE: 25
TD INSIDE: 35
TD INSIDE: 40
TD INSIDE: 50
TD INSIDE: 55
(...)
答案 0 :(得分:1)
你可以这样做:
Element table = document
.select("table.easy-table-creator:nth-child(1) tbody").first();
Elements trAll = table.select("tr");
Elements trAllBody = table.select("tr:not(:first-child)");
// For the Table Hour
Element trFirst = trAll.first();
Elements tds = trFirst.select("td");
for(int i = 0; i < tds.size(); i++){
Element td = tds.get(i);
Log.d("TIME TABLE:", " " + td.text());
String query = "td:nth-child(" + (i + 1) + ")";
Elements subTds = trAllBody.select(query);
for (int j = 0; j < subTds.size(); j++) {
Element subTd = subTds.get(j);
String tdText = subTd.text();
if(!tdText.isEmpty()){
Log.d("TD INSIDE:", " " + subTd.text());
}
}
}
一些有趣的观点:
table.easy-table-creator:nth-child(1) tbody
选择器正在选择页面中的所有表格; td
:td:nth-child(index)
; trAllBody
此处包含不是第一个tr
的所有tr:not(:first-child)
(使用 If(isset($_POST['cost_value']) && !empty($_POST['cost_value']){
选择器)。