JSOUP从p和span抓取html文本 [英] JSOUP scrape html text from p and span
问题描述
我很难获得正确的输出.请从下方查看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>
我想获取段落
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:
-
:has(selector)
仅获取包含与选择器匹配的元素的元素 - 然后用作选择器
span.v:containsOwn(1)
表示您要使用类v
的span
,其text
包含1
. - 最后使用
ownText()
来获取元素本身的文本,而不是其子元素的文本,否则,如果您都希望使用text()
.
:has(selector)
to get only elements that contain elements matching the selector- Then use as selector
span.v:containsOwn(1)
to indicate that you want aspan
of classv
whosetext
contains1
. - And finally use
ownText()
to get the text of the element itself not the text of its children too, otherwise if you want both usetext()
.
因此代码可能是:
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屋!