java - 从 jsoup 中的多个 <p> 标签中解析单个 <p> 标签

标签 java jsoup

我想打印 <p>I want only this line</p> 中的行标记并希望忽略所有其他行。

我有以下 html:

<div class="my value"> 
<h2>Head2</h2>

<p>&nbsp;</p>

<p><strong></strong>Date</p>

<p></p>

<h2><u>Head2</u></h2>

<p>&nbsp;</p>

<p>I want only this line</p>

<p>&nbsp;</p>

<p><strong><u></u></strong></p>

<p>&nbsp;</p>

<p>I do not want this line</p>

</div>

我的java代码是:

String html = "link of the website that contains my html I have showed on top";
Document doc;
try {
    doc = Jsoup.connect(html).get();

    Elements link = doc.select("div.my.value");
    doc=Jsoup.parse(link.html());
    link =doc.select("p");
    String linkText = link.text();

    System.out.println("Link Text\n" + linkText);

} catch (IOException ex) {
    System.out.println("err: " + ex);
}

输出是:

我只想要这行我不想要这行

但我只想打印这一行我只想这一行并且想忽略所有其他<p> </p>标签。我怎样才能实现这个目标?

最佳答案

获得你想要的东西的关键是创建一个好的选择器。让我们看一些使用 HTML 的示例:

1)按内容选择: p:contains(我只想要这一行) 或者,如果您想更具体,div.my p:contains(我只想要这一行)

2) 按 DOM 中的位置进行选择:div p:eq(6)

为了获取元素,我更喜欢使用以下语句: Jsoup.parse(html).select("div.my p:contains(我只想要这一行)").first()

然后你只需要检查返回的元素是否不为空。否则,您可能会得到 NullPointException。

关于java - 从 jsoup 中的多个 <p> 标签中解析单个 <p> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29827913/

相关文章:

java - HashSet 存储 Singleton 对象两次

java - JNI CallObjectMethod 搞砸了堆栈框架?

Android ListView 项目点击不会转到正确的屏幕

java - 如何从 jSoup 元素创建一个数组? ( java )

java - 需要使用 Jsoup 在网页上自动登录的帮助

java - 如何使用 Java (Android) 从网站抓取数据?

java - 字符串至少包含一位数字

java - 如何找出服务器的 websocket url?

java - 在Android中同时从多个Firebase数据库引用中检索数据

java - 让 Jsoup 支持 JavaScript 动态生成的 html