0

从示例中,我想从以下 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中。我使用了两个单独的代码来获取名称,但效率低且速度慢。上面的 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();
            }

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

谢谢你!

4

2 回答 2

0

只需打印text,

    Elements list = doc.select("td[width=200]");
    for(Element td: list) {
        System.out.println(td.text());
    }
于 2013-02-24T13:22:23.160 回答
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();
}
于 2013-02-25T02:28:01.743 回答