HREF + TEXT与Jsoup

时间:2015-08-04 13:52:18

标签: java android parsing html-parsing jsoup

我有以下HTML页面:

 </div><div id="page_content_list01" class="grid_12">
 <h2><strong class="floatleft">TEXT1</strong></h2><br>
    <table>

<tbody>
    <tr>
        <th class="no_width">

<p class="floatleft">Attachments:</p>
        </th>
        <td class="link_azure">   
            <a target="_blank" href="http://www.example.com">TEXT2</a><br/>

        </td>
    </tr>
</tbody>
    </table><h2><strong class="floatleft">TEXT3</strong></h2><br>
    <table>

<tbody>
    <tr>
        <th class="no_width">

<p class="floatleft">Atachments:</p>
        </th>
        <td class="link_azure">   
            <a target="_blank" href="http://www.example2.com">TEXT4</a><br/>

        </td>
    </tr>
</tbody>
    </table><h2><strong class="floatleft">TEXT5</strong></h2><br>
    <table>

<tbody>
    <tr>

其实我在做:

 Elements rows = document.select("div#page_content_list01");

现在我选择&#34; TEXT&#34;和链接。我想制作可点击的链接,所以我使用:

  for (Element eleme : rows) {
       Elements elements = eleme.select("a");
       for (Element elem : elementi) {
            String url = elem.attr("href");
            String title = elem.text();
       }
  }

我得到了:

 url = "http://www.example.com";
 title = "TEXT2";

没关系,但是通过这种方式,我无法阅读&#34; TEXT1&#34;和&#34; TEXT3&#34;。 有人能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我认为你需要对选择者进行研究。首先,您的主要选择器

Elements rows = document.select("div#page_content_list01");

将仅返回一个元素列表,因为您实际上选择了div,而不是表格或表格行。我会这样做以获得所有相关信息:

Elements tables = document.select("div#page_content_list01>table");
for (Element table : tables){
  Element h2 = table.previousElementSibling();
  String titleStr = h2.text();
  Element a = table.select("a").first();
  String linkStr = a.attr("href");
}

请注意,h2元素中的文本与表格处于同一级别,而不是在公共div中。这就是我使用前一个兄弟符号的原因。还要注意我从头脑中写出这个并没有经过考验。你应该明白这个想法。