2016-05-12 105 views
0

我试图从td标记中提取值,但它不起作用,其中td包含一个名为“Technology”的值,并且我想获得td值,例如td是'Technology'和td之后是:'Windows Server'< - 我怎样才能得到这个值?这里是一个代码:JSoup从​​提取值标记

</td> 
    </tr> 
     </tbody> 
     </table> 
     </dd> 
     <dt> 
     <a href="#course-info">Informacje o kursie</a></dt><dd id="course-info"><table><tbody> 

<tr> 
    <td>Odbiorcy:</td> 
    <td style="text-transform: capitalize;">IT Professionals</td> 
</tr> 
<tr> 
    <td>Technologia:</td><td>Windows Server</td> 
</tr> 
<tr> 
    <td>Poziom:</td><td>300</td> 
</tr> 
<tr> 
    <td>Bieżąca wersja:</td><td>B</td> 
</tr> 

当我在做这样的事情:

for (Element element : doc.select("#course-info").first().children()){ 
     if(element.text().contains("Tech")){ 
      System.out.println(element.nextElementSibling().html()); 
     } 
    } 

然后出现NPE(元素),但是当我删除这个循环中,整体法正常工作。

回答

1

“Windows Server”的具体CSS selector#course-info > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2)
如果您想知道使用哪个选择器,请打开浏览器的开发人员工具(F12)并检查DOM。选择所需的元素并获取选择器。
我相信你的表中有更多的行,所以你必须循环。该表通过更改上述选择器中的一个(或多个)数字常量。