Android:如何使用Jsoup搜索单词或短语

时间:2017-02-11 11:09:18

标签: android html jsoup

我的问题是:如何在使用Jsoup选择的页面中搜索单词或短语 例如,如果跨度中的单词或短语如何在每个示例中找到此<span>旁边的文本?例如一个链接?

Html示例代码:

   ...
  <div class="div">
  <span>my y favourite text </span>
  <a href="www.mylink.com">my link </a>
  </div>
   ....

从这个示例中如何找到我的单词是最喜欢的,我还想检索<a href>中的链接?

1 个答案:

答案 0 :(得分:2)

目标:如果span包含指定的搜索字,则在同级href元素的aspan属性中获取文字。

一种方法是查找具有a属性集的href,其中包含preceding sibling span元素。然后选择父元素,并在其中span元素来比较内容。对于解析DOM树,jsoup是一个不错的选择。

示例代码

String source = "<div class=\"div\"><span>my y favourite text </span><a href=\"http://www.mylink.com\">my link </a></div>" +
        "<div class=\"div\"><span>my y favourite 2 text </span><a href=\"/some-link.html\">my link 1</a></div>" +
        "<div class=\"div\"><span>my y text </span><a href=\"http://www.mylink.com\">my link 2</a></div>";

String searchWord = "favourite";

Document doc = Jsoup.parse(source, "UTF-8");
doc.setBaseUri("http://some-source.com"); // only for absolute links in local example

Element parent;
String spanContent="";
String link = "";

for (Element el : doc.select("span ~ a[href]")) {
    parent = el.parent();
    if(parent.select("span").text().contains(searchWord)){
        spanContent = parent.select("span").first().text();
        link = parent.select("a[href]").first().absUrl("href");

        System.out.println(spanContent + " -> " + link); // do something useful with the matches
    }
}

<强>输出

my y favourite text -> http://www.mylink.com
my y favourite 2 text -> http://some-source.com/some-link.html