0

私はJsoupを初めて使用します。リンクの階層を取得するためにスクリーンスクレイピングを行うことを想定しています。最初のページからリンクを取得できますが、各リンクのリンクをさらに深く取得する方法を知る必要があります。これは私がこれまでに持っているものです。それはすべての URL を出力しますが、私はさらに深く掘り下げてそれぞれの URL も出力したいのですが、それが多すぎる場合は、少なくとも URL の例を 1 つ選びたいと思います "* a: http://www.w3schools.com/html/ default.asp (Learn HTML)」は出力からのものであり、すべての子 URL を出力します。

import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

/**
 * Example program to list links from a URL.
 */
public class ListLinks {
    public static void main(String[] args) throws IOException {

    String url = "http://www.w3schools.com/";
    print("Fetching %s...", url);

    Document doc = Jsoup.connect(url).get();
    Elements links = doc.getElementsByTag("a");


    print("\nLinks: (%d)", links.size());
    for (Element link : links) {
       print(" * a: <%s>  (%s)", link.absUrl("href") /*link.attr("href")*/, trim(link.text(), 35));     
    }
    }

    private static void print(String msg, Object... args) {
    System.out.println(String.format(msg, args));
    }

    private static String trim(String s, int width) {
    if (s.length() > width)
        return s.substring(0, width-1) + ".";
    else
        return s;
    }
}

出力:

Fetching http://www.w3schools.com/...

Links: (127)
 * a: <>  ()
 * a: <http://www.w3schools.com/html/default.asp>  (Learn HTML)
 * a: <http://www.w3schools.com/html/html5_intro.asp>  (Learn HTML5)
 * a: <http://www.w3schools.com/css/default.asp>  (Learn CSS)
 * a: <http://www.w3schools.com/css3/default.asp>  (Learn CSS3)
     ...
     ...

他にも URL はありますが、すべてを表示したくありませんでした

4

1 に答える 1