2012-10-20 112 views
1

我想使用Jsoup從網站中提取數據。數據在表格中。Jsoup - 從<a>標記中提取數據,在​​標記內

HTML代碼:

<table><tr><td><a href="......">Pop.Density</a></td> 
      <td>123</td></tr></table> 

我想打印:

zip code...(taken from a text file): 123 

我有以下異常:

Exception in thread "main" java.lang.NullPointerException 

任何幫助,將不勝感激。謝謝!

這是我的代碼:

String s = br.readLine(); 
String str="http://www.bestplaces.net/people/zip-code/illinois/"+s; 

org.jsoup.Connection conn = Jsoup.connect(str); 
conn.timeout(1800000); 
Document doc = conn.get(); 

for (Element table : doc.select("table")) 
{ 
    for (Element row : table.select("tr")) 
    { 
    Elements tds = row.select("td"); 
    if (tds.size() > 1) 
    { 
     Element link = tds.get(0).select("a").first(); 
     String linkText = link.text(); 

     if (link.text().contains("Pop.Density")) 
      System.out.println(s+","+tds.get(1).text()); 
     } 
    } 
} 

更新: 如果我修改的最後,如果():

if (tds.get(0).select("a").text().contains("Pop.Density")) 

我沒有任何異常,但無任何輸出。

回答

1

假設共享html不是真正使用的HTML,我認爲它在第一個TD沒有<a>標記時拋出異常。我認爲你需要更新

if (tds.size() > 1) 

if (tds.size() > 1 && tds.get(0).select("a") != null 
          && tds.get(0).select("a").first() ! null) 

如果不是這種情況,共享NullPointerException起源的行數可以幫助更好地尋找解決方案。

+0

我改變了代碼,但程序拋出了相同的異常。 – Lavinia

+0

@LaviniaTomole:哪一行? –

+0

這一行導致我的問題:String linkText = link.text(); – Lavinia