在强标签Jsoup之后抓取数字

时间:2017-01-04 07:47:21

标签: java html jsoup

  <td style="padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;">
    <strong>test:</strong> 62
  </td>

  <td style="padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;">
    <a style="color: inherit;" href="redacted">
      <strong>test:</strong> 51
    </a>
  </td>

  <td style="padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;">
    <a style="color: inherit;" href="redacted">
      <strongtest:</strong> 11
    </a>
  </td>

我想在每个强力标签后获取该数字。我想我可以做doc.select(“强〜*”),但那是给我null。

我也试过了 元素strong = document.select(“strong”)。first(); //这不应该是强标签之后的第一个元素,还是介于?

之间

在结束标记之后选择的答案是什么。

1 个答案:

答案 0 :(得分:1)

您要查找的数字不在强标记之间。它们位于td标签内部或位于标签内部,标签本身位于td标签内。您可以通过选择td标签并检查td是否有自己的文本来获取数字;如果是,那就是你的号码,获得td的第一个孩子,这是一个标签,并获得自己的文本。例如:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTest {
    public static void main(String argv[]){
        String html = "<table>"+
                    "  <td style=\"padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;\">" +
                    "    <strong>test:</strong> 62" +
                    "  </td>" +
                    "  <td style=\"padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;\">" +
                    "    <a style=\"color: inherit;\" href=\"redacted\">" +
                    "      <strong>test:</strong> 51" +
                    "    </a>" +
                    "  </td>" +
                    "  <td style=\"padding-left: 5px; padding-right: 5px; padding-top: 1px; padding-bottom: 1px; border: none;\">" +
                    "    <a style=\"color: inherit;\" href=\"redacted\">" +
                    "      <strong>test:</strong> 11" +
                    "    </a>" +
                    "  </td>";
        Document doc = Jsoup.parse(html);
        Elements tds = doc.select("td");
        for(Element e : tds){
            if (!e.ownText().isEmpty()){
                System.out.println(e.ownText());
            }
            else{
                System.out.println(e.child(0).ownText());
            }
        }           
    } 
}