使用jsoup仅从同一类中的某些div中提取文本

时间:2016-10-09 17:31:55

标签: java jsoup html-parsing

我想使用jsoup从网站的特定<div>中提取文本,但我不确定如何。

问题是,我想从div中获取一个class="name"的文本。

但是,可以更多<div> s这个类(我不想从那些文本中获取文本)。

在HTML文件中看起来像这样:

.  
.
<div class="name">
Some text I don't want
<span class="a">Tree</span>
</div>
.  
.
<div class="name">Some text I do want</div>
.  
.

唯一的区别是,我想要文本的<div>内部没有<span>。但我还没有找到一种方法来将其用作提取jsoup中文本的关键。

有可能吗?

2 个答案:

答案 0 :(得分:1)

使用JSoup的selector syntax。例如,选择所有具有class =“name”的div使用

import { Directive, ElementRef, Renderer, HostListener } from '@angular/core';


@Directive({
    selector: '[draggable]'
})

export class DragDirective {

    constructor(private el: ElementRef, private renderer: Renderer) { }

    @HostListener('move')
    moveElement(xpos:number) {
        this.renderer.setElementProperty(this.el.nativeElement, 'xpos', xpos);
    }
}

请注意,您上面“执行”和“不执行”的文本位于相同的相对 HTML位置,实际上我不知道您为什么需要其中一个。 HTML和JSoup会看到它们相同。

如果你想避免包含span元素的元素,那么一种方法是迭代上面获得的元素,如果它们有span元素,则由选择器测试:

Elements nameElements = doc.select("div.name");

答案 1 :(得分:0)

您可以使用class =“name”选择所有div元素,然后循环遍历它们。检查一个元素是否包含子元素 - 如果没有,这就是你想要的div。