java - 是否可以使用 JSoup 检测空引用?

标签 java jsoup

我正在尝试使用 Java 中的 JSoup 获取网页的一些数据。我使用 JSoupJSON 解析器的混合来执行此操作。

假设网页中有很多具有相同类名的元素,而另一个元素也具有各自的类名,例如:

<div class="foo">
    <span class="bar">Whatever</span>
</div>

我检索所有元素的 bar 类中的数据,如下所示:

Elements elements = Jsoup
                    .parse(html)
                    .body().select(".foo .bar");

问题的出现是因为有些 div 内部没有 span 标签,因此当我检索网页拥有的元素的完整集合时,不会附加不存在的元素(它有道理,但我需要检测这些元素)。

我想稍后将所有数据存储在某个地方,但要保持列表的顺序,我的意思是,在 span 不包含的元素中放置 -存在,因为如果不存在,如果您有以下序列:

1. foo
2. null
3. bar

仅存储第一个和第三个位置数据,第三个位置将是第二个位置。

是否可以使用 JSoup 检测空引用?

提前致谢!

最佳答案

Jsoup 选择仅返回现有元素。 要检测丢失的元素,您可以首先查询顶部选择器,然后迭代结果以检查顶部元素是否包含所需的子元素:

Elements fooElements = Jsoup
                .parse(html)
                .body().select(".foo");

Elements elements = new Elements()
for(Element el : fooElements) {
    elements.add(el.select(".bar").first());
}

在上面的示例中,elements 将包含具有 foo 类和 null 的跨度。

关于java - 是否可以使用 JSoup 检测空引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748867/

相关文章:

java - 如何在 Java 运行时动态添加类字段

java - 通过代理进行实时视频流传输

java - 水平翻转二维数组矩阵

java - 如何使用 jsoup 设置正确的字符集以运行抛出代理服务器?

java - Jsoup tagName() 给出错误的标签

java - 使用 jsoup 获取元素外部但元素旁边的文本

java - 编写一个以字符串 ArrayList 作为参数的方法

java - 查找所有实现特定接口(interface)的类

java - 内容类型为 : text throws an "Unhandled content type "null""exception in Jsoup 的 IIS 响应

java - 抓取网站