2013-02-24 185 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(); 
}