如何使用Jsoup提取这些数据?

时间:2013-02-24 05:15:36

标签: android json parsing html-parsing jsoup

从示例中,我想从以下HTML代码中获取 name1,name2,name3和name4

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

现在如果您注意到 name1,而name3 位于 a 标记中,则 name2和name4 位于标记 td < / strong>即可。我使用两个单独的代码来获取名称,但它效率低且速度慢。上面的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();
            }

我的问题是如何比这种方法更快地获取名称?也许两个代码都可以。

谢谢!

2 个答案:

答案 0 :(得分:0)

只需打印text

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

答案 1 :(得分: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();
}