[英]Jsoup: get text from all children elements
在我嘗試解析的文檔中有這個元素:
<span class="location accessible-contrast-color-location">
Seattle, WA 98104
<span style="font-size: smaller">(Downtown area)</span>
</span>
我嘗試從中獲取文本Seattle, WA 98104 (Downtown area)
,但只能使用以下代碼獲取Seattle, WA 98104
:
Element locationElement = companyWrapper.selectFirst(".location");
System.out.println((locationElement != null ? locationElement.text() : ""));
我認為text()
應該在父元素及其子元素中都包含文本,但似乎並非如此?
編輯:
Elements jobElements =
doc.select(".jobsearch-SerpJobCard.unifiedRow");
Element companyWrapper = jobElement.selectFirst(".sjcl");
解決方案1
您可以通過 CSS 類名獲取元素文本。 為此,您必須使用doc.select("span.location").text();
在這種情況下,您有一個具有一個子節點的元素,當您調用text
方法時,將獲取主節點(西雅圖,WA 98104)及其子節點(市區)的文本。
代碼如下
public static void main(String[] args) {
String html = "<span class=\"location accessible-contrast-color-location\">" +
"Seattle, WA 98104" +
"<span style=\"font-size: smaller\">(Downtown area)</span>" +
"</span>";
Document doc = Jsoup.parse(html);
String result = doc.select("span.location").text();
System.out.println(result);
}
解決方案2
您還可以使用tag
名稱來獲取它及其子項的文本。
我在 span tag
的幫助下編寫了您的場景。
public static void main(String[] args) {
String html= "<span class=\"location accessible-contrast-color-location\">" +
"Seattle, WA 98104" +
"<span style=\"font-size: smaller\">(Downtown area)</span>" +
"</span>";
Document doc = Jsoup.parse(html);
String result= doc.select("span").first().text();
System.out.println(result);
}
請注意,由於您需要兩個文本,因此必須獲取第一個span
標簽,因為它包含子標簽,因此您可以獲取父標簽文本 ((Seattle, WA 98104)) 以及子標簽文本(市區)從中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.