我的问题是:如何在使用Jsoup选择的页面中搜索单词或短语
例如,如果跨度中的单词或短语如何在每个示例中找到此<span>
旁边的文本?例如一个链接?
Html示例代码:
...
<div class="div">
<span>my y favourite text </span>
<a href="www.mylink.com">my link </a>
</div>
....
从这个示例中如何找到我的单词是最喜欢的,我还想检索<a href>
中的链接?
答案 0 :(得分:2)
目标:如果span
包含指定的搜索字,则在同级href
元素的a
和span
属性中获取文字。
一种方法是查找具有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