【问题标题】:Android: how to search a word or a phrase with JsoupAndroid:如何使用 Jsoup 搜索单词或短语
【发布时间】:2017-02-12 21:14:05
【问题描述】:

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

HTML示例代码:

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

从这个例子中如何找到我的词是最喜欢的并且我也想检索&lt;a href&gt;中的链接?

【问题讨论】:

  • stackoverflow.com/q/8451801/7012517 参考这个链接..!
  • 谢谢...我读到了,但我不明白他在做什么:(
  • @shobhit 你还有其他选择吗?
  • 解决了吗?那么请接受答案或在下面的 cmets 中发布后续/澄清问题。

标签: android html jsoup


【解决方案1】:

目标:如果span 包含指定的搜索词,则获取兄弟a 元素的spanhref 属性中的文本。

一种方法是查找具有href 属性集的a,它具有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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-01-11
  • 2015-08-28
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多