使用Jsoup提取网页中Pages对应数值的最优实现方法咨询
可以通过Jsoup的文本匹配选择器先定位到Pages标签,再向上关联到同一行的内容节点,实现不依赖id的稳定提取,代码如下:
String pagesText = document.select("div.white_label:contains(Pages)") // 向上找到当前Pages标签所属的整行容器 .closest(".row") // 选中该行容器内的内容节点取文本 .select("div.row-desc > div.white_desc") .text();
说明
- 该方案不依赖行id属性,即使页面调整行的顺序、id序号发生变更,只要Pages字段的标签结构不变就能正常提取,鲁棒性远高于原id定位方案
- 如果担心出现其他包含Pages关键词的元素干扰匹配,可以把初始选择器的限定条件加得更严格,比如改成
div.row-label > div.white_label:contains(Pages),进一步缩小匹配范围 - 如果你使用的Jsoup版本低于1.14.1,不支持
closest()方法,可以把对应行替换为.parents(".row").first(),效果完全一致
内容的提问来源于stack exchange,提问作者menteith
相关产品推荐
相关产品推荐

