2013-02-24 214 views
0

例如,我想從以下HTML代碼中抓取name1,name2,name3和name4如何使用Jsoup提取此數據?

<td width="200"><a>name1</a></td> 
<td width="200">name2 </td> 
<td width="200"><a>name3</a></td> 
<td width="200">name4 </td> 

現在,如果您發現名1,和NAME3在標籤一個,但是NAME2,和NAME4在標籤TD。我用兩個獨立的代碼來獲取名稱,但效率低下且速度慢。上面的HTML代碼只是真實代碼的一部分。

try { 
       doc = Jsoup.connect("http://somesite.com").get(); 

       // Here to get the names inside tag a 
       Elements links = doc.select("td a"); 
       for (Element el : links) { 

        linkText = el.ownText(); 

        arr_linkText.add(linkText); 
        } 

       //Here to get the names inside tag td 
       Elements linktwo = doc.select("td"); 
        for (Element eltwo : linktwo) { 

         linkText = eltwo.ownText(); 

         arr_linkText.add(linkText); 
         } 


      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

我的問題是如何比這種方法更快地獲取名稱?也許這兩個代碼。

謝謝!

+0

我希望有人能夠啓發我。 – Ammar 2013-02-24 08:01:29

回答

0

只需打印text

Elements list = doc.select("td[width=200]"); 
    for(Element td: list) { 
     System.out.println(td.text()); 
    } 
+0

這隻抓住name2和name3。 – Ammar 2013-02-24 16:26:16

+0

我執行並打印全部。你最好展示你的代碼和你的輸入HTML。 – 2013-02-25 01:52:14

+0

我很抱歉你的權利,它的作品。我早些時候測試了它錯誤。 – Ammar 2013-02-25 02:24:30

0

您可以使用「」(逗號)運算符爲‘OR’,這是你想在這裏做什麼。所以請嘗試做這樣的事情:

try { 
     doc = Jsoup.connect("http://somesite.com").get(); 

     Elements links = doc.select("td, td a"); 
     for (Element el : links) { 
      arr_linkText.add(el.text()); 
     } 
} catch (IOException e) { 
     e.printStackTrace(); 
}