JSOUP从p和span抓取html文本 [英] JSOUP scrape html text from p and span

查看:68
本文介绍了JSOUP从p和span抓取html文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难获得正确的输出.请从下方查看HTML的示例文本:

I'm having a hard time getting the correct output. Please see below sample text from HTML:

 <p><span class="v">1</span> Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.</p>

 <p><span class="v">2</span> Hij doet mij nederliggen in grazige weiden; Hij voert mij zachtjes aan zeer stille wateren.</p>

 <p><span class="v">3</span> Hij verkwikt mijn ziel; Hij leidt mij in het spoor der gerechtigheid, om Zijns Naams wil.</p>

我想获取段落

的值,即恩诗篇范戴维(Een psalm van David). De HEERE是mijn Herder和mijzal niets ontbreken.基于用户选择的 verse

I want to get the value of paragraph

that is Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken. based on user's selected verse

到目前为止,这是我所做的:

So far this is what I've done:

HttpGet get = new HttpGet(url);
HttpResponse resp = client.execute(get);

String content = EntityUtils.toString(resp.getEntity());
Document doc = Jsoup.parse(content);

StringBuilder sb = new StringBuilder();

Elements passage = doc.select("p > span.v");

sb.append(passage.text() + "\n");

Elements links = doc.select(className);
for (Element link : links) {
    sb.append(link.text() + " ");
}
Log.e("ELEMENTS", "" + sb.toString());
response = sb.toString();

但是我只得到那节经文.如何获得正确的输出?我很乐意为您提供帮助.谢谢.

But I'm only getting the verse numbers. How do I get the correct output? I would gladly appreciate any help. Thanks.

推荐答案

假设您要获取第1节的段落,则可以使用:

Assuming that you want to get the paragraph of verse 1, you can do it using:

  1. :has(selector)仅获取包含与选择器匹配的元素的元素
  2. 然后用作选择器span.v:containsOwn(1)表示您要使用类vspan,其text包含1.
  3. 最后使用ownText()来获取元素本身的文本,而不是其子元素的文本,否则,如果您都希望使用text().
  1. :has(selector) to get only elements that contain elements matching the selector
  2. Then use as selector span.v:containsOwn(1) to indicate that you want a span of class v whose text contains 1.
  3. And finally use ownText() to get the text of the element itself not the text of its children too, otherwise if you want both use text().

因此代码可能是:

String className = "v";
int verse = 1;
Element p = doc.select(String.format("p:has(span.%s:containsOwn(%d))", className, verse))
    .first();
System.out.println(p.ownText());

输出:

Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.


如果要获取所有段落的内容,代码可以是:


If you want to get all paragraphs' content, the code could be:

StringBuilder sb = new StringBuilder();
Elements paragraphs = doc.select("p:has(span.v)");
for (Element p : paragraphs) {
    sb.append(p.ownText() + "\n");
}
System.out.println(sb);

输出:

Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.
Hij doet mij nederliggen in grazige weiden; Hij voert mij zachtjes aan zeer stille wateren.
Hij verkwikt mijn ziel; Hij leidt mij in het spoor der gerechtigheid, om Zijns Naams wil.

这篇关于JSOUP从p和span抓取html文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆