Android JSOUP使用节点获取HTML标记之外的特定文本
所以,我一直在使用jSoup解析网站中的一些元数据,这非常有效。问题是我需要的一些重要元数据不在任何标记中,我不知道如何获取它 以下是我需要从URL获取的数据示例:Android JSOUP使用节点获取HTML标记之外的特定文本,android,html,parsing,jsoup,nodes,Android,Html,Parsing,Jsoup,Nodes,所以,我一直在使用jSoup解析网站中的一些元数据,这非常有效。问题是我需要的一些重要元数据不在任何标记中,我不知道如何获取它 以下是我需要从URL获取的数据示例: <div class="newclass "> <div> <p> <strong>Arist:</strong> Picasso Biggie <em>
<div class="newclass ">
<div>
<p>
<strong>Arist:</strong> Picasso Biggie <em>|</em>
<strong>Released:</strong> 3 years ago <em>|</em>
<strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em>
<strong>Producer:</strong> Various <em>|</em>
<strong>Featuring:</strong> Mount Kimbie <em>|</em>
</p>
</div>
</div>
更新:的答案对于获取标记之外的所有文本非常有用,但我想知道是否有一种方法可以只指定特定的节点,这样我就只能获取特定的单词。比如说,你没有得到
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
我只得到:
3 years ago
如果我只需要专辑发行的那一年
更新#2:
好的,为了解决我的第二个问题,我解析了多个具有与上面相同HTML结构的项,我只是继续,并在jSoup的选择器查询中包含了我想要的特定元素。例如,如果我想知道毕加索·比吉斯专辑的所有发行日期。这是我使用的代码:
Document doc = Jsoup.connect(URL).get;
Elements dakss1 = doc.select(".newclass p strong:contains(Released) ");
for(Element dakss : dakss1) {
Node nodeWithReleaseDates =(Node) dakss.nextSibling();;
System.out.println("" + nodeWithReleaseDates);
}
接下来,我返回了毕加索·比吉各种专辑的所有发行日期,如下所示:
3 years ago
2 years ago
7 months ago
1 month ago
在您的问题中,有一个未定义的变量
rayz1
示例代码可能会对您有所帮助。我已经运行了它,它工作了
String html =
"<div class=\"newclass \">\n"
+ " <div>\n"
+ " <p> \n"
+ " <strong>Arist:</strong> Picasso Biggie <em>|</em>\n"
+ " <strong>Released:</strong> 3 years ago <em>|</em>\n"
+ " <strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em> \n"
+ " <strong>Producer:</strong> Various <em>|</em> \n"
+ " <strong>Featuring:</strong> Mount Kimbie <em>|</em> \n"
+ " </p>\n"
+ " </div>\n"
+ "</div>";
Document doc = Jsoup.parse(html);
Elements dakss1 = doc.select("div p strong");
for (Node dakss : dakss1) {
System.out.println(dakss.nextSibling().toString().replace(" ", "").trim());
}
String html=
“\n”
+“\n”
+“\n”
+“阿里斯特:毕加索·比吉|\n”
+“发布:3年前|\n”
+“专辑:毕加索·比吉:大人物”\n”
+“制作人:各种|\n”
+“特色:金比山|\n”
+“\n”
+“\n”
+ "";
Document doc=Jsoup.parse(html);
元素dakss1=文件选择(“div p strong”);
用于(节点dakss:dakss1){
System.out.println(dakss.nextSibling().toString().replace(“,”).trim());
}
结果将是:
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
毕加索·比吉
三年前
毕加索·比吉:大人物
各种各样的
金比山
在您的问题中,有一个未定义的变量
rayz1
示例代码可能会对您有所帮助。我已经运行了它,它工作了
String html =
"<div class=\"newclass \">\n"
+ " <div>\n"
+ " <p> \n"
+ " <strong>Arist:</strong> Picasso Biggie <em>|</em>\n"
+ " <strong>Released:</strong> 3 years ago <em>|</em>\n"
+ " <strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em> \n"
+ " <strong>Producer:</strong> Various <em>|</em> \n"
+ " <strong>Featuring:</strong> Mount Kimbie <em>|</em> \n"
+ " </p>\n"
+ " </div>\n"
+ "</div>";
Document doc = Jsoup.parse(html);
Elements dakss1 = doc.select("div p strong");
for (Node dakss : dakss1) {
System.out.println(dakss.nextSibling().toString().replace(" ", "").trim());
}
String html=
“\n”
+“\n”
+“\n”
+“阿里斯特:毕加索·比吉|\n”
+“发布:3年前|\n”
+“专辑:毕加索·比吉:大人物”\n”
+“制作人:各种|\n”
+“特色:金比山|\n”
+“\n”
+“\n”
+ "";
Document doc=Jsoup.parse(html);
元素dakss1=文件选择(“div p strong”);
用于(节点dakss:dakss1){
System.out.println(dakss.nextSibling().toString().replace(“,”).trim());
}
结果将是:
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
毕加索·比吉
三年前
毕加索·比吉:大人物
各种各样的
金比山
在您的问题中,有一个未定义的变量
rayz1
示例代码可能会对您有所帮助。我已经运行了它,它工作了
String html =
"<div class=\"newclass \">\n"
+ " <div>\n"
+ " <p> \n"
+ " <strong>Arist:</strong> Picasso Biggie <em>|</em>\n"
+ " <strong>Released:</strong> 3 years ago <em>|</em>\n"
+ " <strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em> \n"
+ " <strong>Producer:</strong> Various <em>|</em> \n"
+ " <strong>Featuring:</strong> Mount Kimbie <em>|</em> \n"
+ " </p>\n"
+ " </div>\n"
+ "</div>";
Document doc = Jsoup.parse(html);
Elements dakss1 = doc.select("div p strong");
for (Node dakss : dakss1) {
System.out.println(dakss.nextSibling().toString().replace(" ", "").trim());
}
String html=
“\n”
+“\n”
+“\n”
+“阿里斯特:毕加索·比吉|\n”
+“发布:3年前|\n”
+“专辑:毕加索·比吉:大人物”\n”
+“制作人:各种|\n”
+“特色:金比山|\n”
+“\n”
+“\n”
+ "";
Document doc=Jsoup.parse(html);
元素dakss1=文件选择(“div p strong”);
用于(节点dakss:dakss1){
System.out.println(dakss.nextSibling().toString().replace(“,”).trim());
}
结果将是:
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
毕加索·比吉
三年前
毕加索·比吉:大人物
各种各样的
金比山
在您的问题中,有一个未定义的变量
rayz1
示例代码可能会对您有所帮助。我已经运行了它,它工作了
String html =
"<div class=\"newclass \">\n"
+ " <div>\n"
+ " <p> \n"
+ " <strong>Arist:</strong> Picasso Biggie <em>|</em>\n"
+ " <strong>Released:</strong> 3 years ago <em>|</em>\n"
+ " <strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em> \n"
+ " <strong>Producer:</strong> Various <em>|</em> \n"
+ " <strong>Featuring:</strong> Mount Kimbie <em>|</em> \n"
+ " </p>\n"
+ " </div>\n"
+ "</div>";
Document doc = Jsoup.parse(html);
Elements dakss1 = doc.select("div p strong");
for (Node dakss : dakss1) {
System.out.println(dakss.nextSibling().toString().replace(" ", "").trim());
}
String html=
“\n”
+“\n”
+“\n”
+“阿里斯特:毕加索·比吉|\n”
+“发布:3年前|\n”
+“专辑:毕加索·比吉:大人物”\n”
+“制作人:各种|\n”
+“特色:金比山|\n”
+“\n”
+“\n”
+ "";
Document doc=Jsoup.parse(html);
元素dakss1=文件选择(“div p strong”);
用于(节点dakss:dakss1){
System.out.println(dakss.nextSibling().toString().replace(“,”).trim());
}
结果将是:
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
毕加索·比吉
三年前
毕加索·比吉:大人物
各种各样的
金比山
谢谢,我不知道该怎么办。现在,如果我只想得到像艺术家“毕加索·比吉”这样的特定文本,而不想得到其他文本,那么这是不可能的?@KellaRoss,更多细节,你可以