Выберите href, присутствующий в определенном теге div

0

Мне нужно выбрать теги привязки, присутствующие в теге div, где id = content. Я использовал следующий код в java

Element lin = doc.getElementById("tag#content");
Elements links = lin.select("a[href]");

Но когда я отлаживаю программу lin = Null.

Я также попробовал приведенный ниже код, но lin все еще был нулевым.

Elements lin = doc.select("div#content");
Elements links = lin.select("a[href]");

Это мой HTML:

<div id="content">
<ul class="nolist">
<li><a href="/undergraduate/"><h3>Undergraduate Study</h3></a></li>
<li><a href="/graduate/"><h3>Graduate Study</h3></a></li>
<li><a href="/currentstudents/course/current/"><h3>Courses</h3></a></li>
</ul>
</div>

Любая помощь будет оценена. Спасибо.

Теги:
jsoup
parsing

3 ответа

0
Лучший ответ
Elements links = doc.select("div#content > ul > li > a");

for (Element e : links) {
       System.out.println(e.attr("href"));
}

Что будет выводить:

/undergraduate/
/graduate/
/currentstudents/course/current/

Что касается ваших комментариев, я пробовал это:

String html = "<div id='content'><ul class='nolist'><li><a href='/undergraduate/'><h3>Undergraduate Study</h3></a></li><li><a href='/graduate/'><h3>Graduate Study</h3></a></li><li><a href='/currentstudents/course/current/'><h3>Courses</h3></a></li></ul></div>";
Document doc = Jsoup.parse(html);
Elements e = doc.select("div#content a");
System.out.println(e.toString());

Elements f = doc.select("div#content > ul > li > a");
System.out.println(f.toString());

Получил этот вывод:

<a href="/undergraduate/"><h3>Undergraduate Study</h3></a>
<a href="/graduate/"><h3>Graduate Study</h3></a>
<a href="/currentstudents/course/current/"><h3>Courses</h3></a>
<a href="/undergraduate/"><h3>Undergraduate Study</h3></a>
<a href="/graduate/"><h3>Graduate Study</h3></a>
<a href="/currentstudents/course/current/"><h3>Courses</h3></a>
  • 0
    все еще null.this я выполнил Document doc = Jsoup.connect(startLink).get(); Elements links1 = doc.select("div#content > ul > li > a"); for (Element e : links1) { System.out.println(e.attr("href")); }
  • 0
    дело в том, что doc.select("div#content") дает мне ноль
Показать ещё 4 комментария
0

Извините, ребята, я использовал неправильный URL. В приведенном ниже doc.select("div#content a"); работал doc.select("div#content a"); Но doc.select("div#content > ul > li > a"); дает мне повод для каких-либо причин?

  • 0
    Хм интересно. Я думаю, что оба способа должны работать, но я думаю, это зависит от структуры HTML. В первом примере будут выбраны дочерние элементы, которые происходят от предка, например, любые <a> которые происходят от <div id="content"> . Во втором примере выбираются дочерние элементы, которые происходят непосредственно от родителя (или иерархии). Смотрите эту ссылку и читайте о комбинациях селекторов.
  • 0
    Фактически, используя ТОЛЬКО HTML, который вы Jsoup.parse(html) в исходном вопросе ( Jsoup.parse(html) ), оба способа работают. Я только что проверил, смотрите мой обновленный ответ.
0

Вы попытались с этим:

Element lin = doc.getElementById("tag#content");
  • 0
    Element lin = doc.getElementById("tag#content"); Elements links = lin.select("a[href]"); прежнему нулевой. Element lin = doc.getElementById("tag#content"); Elements links = lin.select("a[href]");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню