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に含まれています。名前を取得するために2つの別々のコードを使用しましたが、非効率的で低速です。上記の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();
            }

私の質問は、この方法よりも速く名前を取得するにはどうすればよいですか?多分両方のための1つのコード。

ありがとう!

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 に答える