2016-05-12 388 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。選擇所需的元素並獲取選擇器。
我相信你的表中有更多的行,所以你必須循環。該表通過更改上述選擇器中的一個(或多個)數字常量。