2017-10-19 377 views
-1

我試圖從Jsoup的HTML字符串中獲取數據,但沒有成功。 的HTML代碼是Jsoup總是返回null

<form> 
<table> 
    <tr> 
     <th>First</th> 
     <th>Second</th> 
     <th>Third</th> 
    </tr> 
    <tr> 
     <td><input type="text" name="elems[][f]" value="one" /></td> 
     <td><input type="text" name="people[][s]" value="two" /></td> 
     <td><input type="text" name="people[][t]" value="three" /></td> 
    </tr> 
    <tr> 
     <td><input type="text" name="elems[][f]" value="one1" /></td> 
     <td><input type="text" name="people[][s]" value="two2" /></td> 
     <td><input type="text" name="people[][t]" value="three3" /></td> 
    </tr> 
</table> 
<input type="submit" value="next" /> 

我試過不同的情況,但一無所獲。我會從th和每個td檢索數據。這是「日」的例子:

Document document = Jsoup.parse(HTMLSTring); 

    Elements tables = document.select("table"); 
    for (Element table : tables){ 
     Elements ths = table.getElementsByTag("th"); 
     for(Element th : ths) 
     { 
      System.out.println(th.text()); 
     } 
    } 
+0

不需要首先檢查'tr'嗎? –

+0

你有沒有考慮過創建一個*正確的*'

'? ''元素內部的''元素中?並且'​​'元素被''元素所籠罩? – EJP

+0

你不需要首先檢查'tr',因爲'getElementsByTag'是遞歸的。你的代碼工作......這不是關於JSoup返回null。你是否檢查過HTMLSTring中是否收到正確的html內容 – Nirekin

回答

1

你的代碼工作..

如果你把你的HTML輸入到這樣一個字符串變量:

public static void main(String[] args) { 
    String HTMLSTring= "<form><table><tr><th>First</th><th>Second</th><th>Third</th></tr><tr><td><input type=\"text\" name=\"elems[][f]\" value=\"one\" /></td><td><input type=\"text\" name=\"people[][s]\" value=\"two\" /></td><td><input type=\"text\" name=\"people[][t]\" value=\"three\" /></td></tr><tr><td><input type=\"text\" name=\"elems[][f]\" value=\"one1\" /></td><td><input type=\"text\" name=\"people[][s]\" value=\"two2\" /></td><td><input type=\"text\" name=\"people[][t]\" value=\"three3\" /></td></tr></table><input type=\"submit\" value=\"next\" />"; 

    Document document = Jsoup.parse(HTMLSTring); 
    Elements tables = document.select("table"); 
    for (Element table : tables){ 
     Elements ths = table.getElementsByTag("th"); 
     for(Element th : ths) 
     { 
      System.out.println(th.text()); 
     } 
    } 
} 

你將有預期結果。

  • 首先

您可以在您正在閱讀的HTML輸入的方式有問題。

例如在Document document = Jsoup.parse(HTMLSTring);上放置一個斷點,以確保收到正確的內容。

'元素位於'