java jsoup - как получить все ссылки из поиска по тексту - PullRequest
0 голосов
/ 11 октября 2019

У меня много таких строк на веб-странице:

<a href="City1/Waves321.aspx"><span><span style="font-family: Courier New">Title</span></span></a> 
<span style="font-family: Courier New"> (<a href="City1/River267.aspx">txt</a>)</span></li></ul>
<a href="City2/Waves761.aspx"><span><span style="font-family: Courier New">Title</span></span></a>
<span style="font-family: Courier New"> (<a href="City2/River767.aspx">txt</a>)</span></li></ul>

, и я хочу получить только:

City1/Waves321.aspx

City2/Waves761.aspx

и так далее ... каждый раз перед «Заголовком».

Я тестировал этот код:

public class ListLinks {
    public static void main(String[] args) throws IOException {
        Validate.isTrue(args.length == 1, "usage: supply url to fetch");
        String url = args[0];
        String address;

        Document doc = Jsoup.connect(url).timeout(10*1000).get();
        Elements links = doc.select("a[href~=(Waves)]");
        //String linkText = links.text();

        for (Element link : links) {
            String linkHref = link.attr("href");
            address = url + linkHref;
            System.out.println(address);
        }

, и он работает для большинства ссылок, но он пропускаетте, что «Заголовок» в новой строке, например:

<a href="City/Waves321.aspx"><span><span style="font-family: Courier New">
Title</span></span></a><span style="font-family: Courier New"> (<a href="City/River267.aspx">txt</a>)</span></li></ul>

Я не могу изменить код веб-страницы (кстати: /)

Как я могу добиться этого в Jsoup

1 Ответ

0 голосов
/ 11 октября 2019

вы можете сделать так -

Elements e = doc.getElementsByTag("a");
e.stream().forEach(p -> System.out.println(p.attr("href")));
...