在强标记jsoup后获取数字

ffscu2ro  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(457)
<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(“strong~*”),但这给了我空值。
我还尝试了element strong=document.select(“strong”).first()//这不应该是强标记之后的第一个元素还是介于之间的元素?
结束标记后要选择的答案是什么。

vecaoik1

vecaoik11#

您要查找的号码不在强标签之间。它们要么在td标签内,要么在a标签内,a标签本身就在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());
            }
        }           
    } 
}

相关问题