我正在尝试使用Jsoup解析器从某个表中获取数据。
表格的Html代码:
<table class="ednevnik-seznam_ur_teden">
<tr>
<th width="10%">
<div style="color:black;">Ura</div>
<div style="font-size:11px;"> </div></th>
<th class="ednevnik-seznam_ur_teden-th-danes">
<div>Ponedeljek</div>
<div style="font-size:10px;font-weight:normal;color:#777;">16. 12.</div>
</th>
<th >
<div>Torek</div>
<div style="font-size:10px;font-weight:normal;color:#777;">17. 12.</div>
</th>
<th >
<div>Sreda</div>
<div style="font-size:10px;font-weight:normal;color:#777;">18. 12.</div>
</th>
<th >
<div>Četrtek</div>
<div style="font-size:10px;font-weight:normal;color:#777;">19. 12.</div>
</th>
<th >
<div>Petek</div>
<div style="font-size:10px;font-weight:normal;color:#777;">20. 12.</div>
</th>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">1. ura</div>
<div class="text10 gray">7:00 - 7:45</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-1-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-1-2013-12-17" class="ednevnik-seznam_ur_teden-td ">
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-1-2013-12-18" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Matematika">MAT</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
M. Baloh, 108 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-1-2013-12-19" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Izdelava osnovnih vezij praksa">IOVP</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
R. Fele, ED5 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-1-2013-12-20" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Slovenščina">SLO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Gutman, 107 </div>
</div>
</td>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">2. ura</div>
<div class="text10 gray">7:50 - 8:35</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-2-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
<div class="ednevnik-seznam_ur_teden-urnik ednevnik-seznam_ur_teden-td-danes" style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Geografija">GEO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Bec, 109 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-2-2013-12-17" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Angleščina">ANG</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
I. Lesjak, 106 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-2-2013-12-18" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Slovenščina">SLO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Gutman, 107 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-2-2013-12-19" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Izdelava osnovnih vezij praksa">IOVP</span> </td>
<td style="border:none;" align="right"><a href="javascript:;" onclick="$('#ednevnik-seznam_ur_teden-blok-2-2013-12-19').toggle();stop_propagation(event);" class="ednevnik-seznam_ur_teden-vec_ur" title="Več skupin">2</a></td>
</tr>
</table>
<div class="text11">
R. Fele, ED5 </div>
</div>
<div id="ednevnik-seznam_ur_teden-blok-2-2013-12-19" class="ni_prvi"><div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;border-top:1px solid #E6E6E6;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Infor.s tehniškim kom. vaje">ITKV</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Kirn, 207 </div>
</div>
</div> </td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-2-2013-12-20" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Matematika">MAT</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
M. Baloh, 108 </div>
</div>
</td>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">3. ura</div>
<div class="text10 gray">8:40 - 9:25</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-3-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
<div class="ednevnik-seznam_ur_teden-urnik ednevnik-seznam_ur_teden-td-danes" style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Slovenščina">SLO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Gutman, 107 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-3-2013-12-17" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Kemija">KEM</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Kovač Hace, 204 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-3-2013-12-18" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Angleščina">ANG</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
I. Lesjak, 106 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-3-2013-12-19" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Izdelava osnovnih vezij praksa">IOVP</span> </td>
<td style="border:none;" align="right"><a href="javascript:;" onclick="$('#ednevnik-seznam_ur_teden-blok-3-2013-12-19').toggle();stop_propagation(event);" class="ednevnik-seznam_ur_teden-vec_ur" title="Več skupin">2</a></td>
</tr>
</table>
<div class="text11">
R. Fele, ED5 </div>
</div>
<div id="ednevnik-seznam_ur_teden-blok-3-2013-12-19" class="ni_prvi"><div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;border-top:1px solid #E6E6E6;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Infor.s tehniškim kom. vaje">ITKV</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Kirn, 207 </div>
</div>
</div> </td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-3-2013-12-20" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Izdelava osnovnih vezij">IOV</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
J. Kalšek, 112 </div>
</div>
</td>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">4. ura</div>
<div class="text10 gray">9:30 - 10:40</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-4-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
<div class="ednevnik-seznam_ur_teden-urnik ednevnik-seznam_ur_teden-td-danes" style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Zgodovina">ZGO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
V. Kralj, 109 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-4-2013-12-17" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Umetnost">UME</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Bec, 109 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-4-2013-12-18" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Geografija">GEO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Bec, 109 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-4-2013-12-19" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Angleščina">ANG</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
I. Lesjak, 106 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-4-2013-12-20" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Informatika s tehniškim komuniciranjem">ITK</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
I. Pavlič, 207 </div>
</div>
</td>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">5. ura</div>
<div class="text10 gray">10:45 - 11:30</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-5-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
<div class="ednevnik-seznam_ur_teden-urnik ednevnik-seznam_ur_teden-td-danes" style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Matematika">MAT</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
M. Baloh, 108 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-5-2013-12-17" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Slovenščina">SLO</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Gutman, 107 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-5-2013-12-18" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Upravljanje s programirljivimi napravami">UPN</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
R. Fele, 216 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-5-2013-12-19" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Kemija">KEM</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
S. Kovač Hace, 204 </div>
</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-5-2013-12-20" class="ednevnik-seznam_ur_teden-td ">
<div class="ednevnik-seznam_ur_teden-urnik " style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Informatika s tehniškim komuniciranjem">ITK</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
I. Pavlič, 207 </div>
</div>
</td>
</tr>
<tr>
<td width="10%" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-ura">
<div class="black bold text14" style="padding-bottom:0px;">6. ura</div>
<div class="text10 gray">11:35 - 12:20</div>
</td>
<td width="18%" id="ednevnik-seznam_ur_teden-td-6-2013-12-16" class="ednevnik-seznam_ur_teden-td ednevnik-seznam_ur_teden-td-danes">
<div class="ednevnik-seznam_ur_teden-urnik ednevnik-seznam_ur_teden-td-danes" style="color:#444;"> <table class="w100 collapse">
<tr>
<td style="border:none;" class="text14 bold"><span title="Izdelava osnovnih vezij">IOV</span> </td>
<td style="border:none;" align="right"></td>
</tr>
</table>
<div class="text11">
J. Kalšek, 216 </div>
//code goes on here
对于乱码,您可以尝试自己查看页面来源:https://www.easistent.com/urniki/cc45c5d0d303f954588402a186f5cdba5edb51d6/razredi/16515
但有人已让我知道它在某些国家/地区无法打开该页面。
因此,如果每个 td 或至少 tr 拥有自己的唯一ID或CLASS,那么这不会是一个问题。但它们都是一样的,并且每个 td 都有另一个 td ,其中有一个“text 14 bold”类,在 td 中,有一个具有特定标题的范围。但是这个标题对我没有帮助,因为如果这个表格会被更新,代码将无用,因为标题也会被更改。
或者也许是我以错误的方式接近这个并且有一个更好的库可以更容易地进行HTML解析?
我很难解释,我无法向任何搜索引擎解释这一点,所以如果有人帮忙,我会非常感激。
答案 0 :(得分:1)
查看源代码,包含计划的感兴趣的表如下:
<table class="ednevnik-seznam_ur_teden">
每一行都在表体内的tr
元素中表示。
因此,可以使用带有语法
Elements e = doc.select("table.ednevnik-seznam_ur_teden tbody tr span");
它只是告诉Jsoup选择span
元素内tr
元素内tbody
元素的所有ednevnik-seznam_ur_teden
元素。有点嵌套,但很容易理解。
所选节点的text
属性的输出将是span
元素内的所有文本。
要分隔tr
元素,您只需在选择元素时使用tr:eq(n)
语法。 tr:eq(n)
告诉选择器仅选择索引等于tr
的{{1}}。 element例如,要按照评论中的建议选择第二行的值,以下方法可以解决问题:
n
将输出
Elements e = doc.select("table.ednevnik-seznam_ur_teden tbody tr:eq(2) span");
for (Element element : e) {
System.out.println(element.text());
}