[android]Jsoup 获取数据从表内表

标签: jsoup Android PHP HTML
发布时间: 2017/3/17 1:02:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这不是简单的。 我解析网页 (http://www.catedralaltapatagonia.com/invierno/partediario.php?default_tab=0) 我需要的数据满足里面另一个表,表中,但我无法访问,因为我收到有关无效索引索引总是错误

我需要这个值

cells i need

这个细胞是 td tr,表, 内,此表在另一个表里面。 每一列的单元格在里面一个 div id"meteo_info",和每个 td 里面都有相同的名称 div id。

我试过这种方式,但没有成功

      Elements base1=document.select("div#pd_foto_fondo");
            Elements base2 = base1.select("table");
            Elements base3 = base2.select("tr");
            Elements base4 = base3.select("table");
            Elements base5 = base4.select("tr");
            Elements base6 = base5.select("td");
            Element base7 =base6.get(0);
            Element div1 = base7.getElementById("meteo_info");
            Elements tables1 = div1.getElementsByTag("table");
            Element table1 = tables1.get(0);

            String text2 = table1.getElementsByTag("tr").get(3).getElementsByTag("td").get(2).text();

我使用这段代码里面 Asyntask doInBackground

解决方法 1:

第一件事,当下载您的应用程序中的 web 页,更改 USER AGENT 字段以匹配 browser 您使用您的计算机上。我会保证你得到完全相同的页面在您的应用程序具有相同的标签。
我用 FF,但如果你使用另一个 browser 它应该是几乎一样的 — —
打开开发人员工具 (在 FF 它是 f12 键),选择检查器,选择 element 选取器 (FF-离开大多数工具)。后,选择你想要的元素之一,比方说 Sensación Térmica 的部门基地。browser将突出显示包含的代码 element
将鼠标置于 highligthed 代码,右键单击它并选择 Copy unique selector
然后你可以使用此代码来获取 element -

Elements e = doc.select("#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)"); 

你可以通过获取值

e.text();

现在,做你需要的所有元素,你会发现一种模式 — — 有三个表 (部门基础上,部门 INTERMEDIO 部门上级) 和他们的 id 是在结束了 (不容易看出来,太长线...)-从第 7 位

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)
#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)
#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(3) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)

也,每一行都有一个不同的 id,这 time 它是结束了第二个。Sensación Térmica 是

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)

Viento 是

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(5) > td:nth-child(3)

(注意 4 和 5 的最后两行)。
您可以用两个嵌套在这些选择器运行 for 循环,并获得您需要的所有信息。

官方微信
官方QQ群
31647020