2017-02-11 5 views
0

Моя проблема: как я могу найти слово или фразу на странице, выбранной с помощью Jsoup.
Например, если слово или фраза в промежутке, как я могу найти, например, текст рядом с этим <span>? Например, ссылка?Android: как искать слово или фразу с Jsoup

Html пример кода:

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

Из этого примера, как найти, что мое слово любимая, и я также хочу, чтобы получить ссылку в <a href>?

+0

http://stackoverflow.com/q/8451801/7012517 относятся к этой ссылке ..! – Shobhit

+0

Спасибо ... Я прочитал это, но я не понимаю, что он делает :( – 24terminator96

+0

@shobhit есть ли у вас другие альтернативы? – 24terminator96

ответ

2

Цель: получить текст в span и href атрибуте элемента родственного a, если span содержит заданное слово для поиска.

Один из способов искать a, имеющий множество href атрибута, который имеет preceding siblingspan элемент. Затем выберите родительский элемент и в нем элемент 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 
+0

В doc.выбрать ~ то же самое из? – 24terminator96

+0

- это то же самое, что simbol? – 24terminator96

+0

Нет,> для ребенка, ~ для брата. См.: Http://www.w3schools.com/css /css_combinators.asp –