Android JSOUP使用节点获取HTML标记之外的特定文本

Android JSOUP使用节点获取HTML标记之外的特定文本,android,html,parsing,jsoup,nodes,Android,Html,Parsing,Jsoup,Nodes,所以,我一直在使用jSoup解析网站中的一些元数据,这非常有效。问题是我需要的一些重要元数据不在任何标记中,我不知道如何获取它 以下是我需要从URL获取的数据示例: <div class="newclass "> <div> <p> <strong>Arist:</strong>&nbsp;Picasso Biggie <em>

所以,我一直在使用jSoup解析网站中的一些元数据,这非常有效。问题是我需要的一些重要元数据不在任何标记中,我不知道如何获取它

以下是我需要从URL获取的数据示例:

<div class="newclass ">
        <div>
            <p>     
                    <strong>Arist:</strong>&nbsp;Picasso Biggie <em>|</em>
                    <strong>Released:</strong>&nbsp;3 years ago <em>|</em>
                    <strong>Album:</strong>&nbsp;Picasso Biggie: The Big OneUp <em>|</em>                       
                    <strong>Producer:</strong>&nbsp;Various <em>|</em>                      
                    <strong>Featuring:</strong>&nbsp;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>&nbsp;Picasso Biggie <em>|</em>\n"
            + "                    <strong>Released:</strong>&nbsp;3 years ago <em>|</em>\n"
            + "                    <strong>Album:</strong>&nbsp;Picasso Biggie: The Big OneUp <em>|</em>                       \n"
            + "                    <strong>Producer:</strong>&nbsp;Various <em>|</em>                      \n"
            + "                    <strong>Featuring:</strong>&nbsp;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("&nbsp;", "").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>&nbsp;Picasso Biggie <em>|</em>\n"
            + "                    <strong>Released:</strong>&nbsp;3 years ago <em>|</em>\n"
            + "                    <strong>Album:</strong>&nbsp;Picasso Biggie: The Big OneUp <em>|</em>                       \n"
            + "                    <strong>Producer:</strong>&nbsp;Various <em>|</em>                      \n"
            + "                    <strong>Featuring:</strong>&nbsp;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("&nbsp;", "").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>&nbsp;Picasso Biggie <em>|</em>\n"
            + "                    <strong>Released:</strong>&nbsp;3 years ago <em>|</em>\n"
            + "                    <strong>Album:</strong>&nbsp;Picasso Biggie: The Big OneUp <em>|</em>                       \n"
            + "                    <strong>Producer:</strong>&nbsp;Various <em>|</em>                      \n"
            + "                    <strong>Featuring:</strong>&nbsp;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("&nbsp;", "").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>&nbsp;Picasso Biggie <em>|</em>\n"
            + "                    <strong>Released:</strong>&nbsp;3 years ago <em>|</em>\n"
            + "                    <strong>Album:</strong>&nbsp;Picasso Biggie: The Big OneUp <em>|</em>                       \n"
            + "                    <strong>Producer:</strong>&nbsp;Various <em>|</em>                      \n"
            + "                    <strong>Featuring:</strong>&nbsp;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("&nbsp;", "").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,更多细节,你可以