```

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

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

public class RecursiveLinkExtractor {

    private static Set<String> visitedLinks = new HashSet<>();

    public static void main(String[] args) {
        String startingUrl = "https://example.com/";
        extractLinksRecursively(startingUrl, 0);
    }

    private static void extractLinksRecursively(String url, int depth) {
        if (depth > 5) {
            // Limit the depth to avoid infinite recursion
            return;
        }

        if (!visitedLinks.contains(url)) {
            visitedLinks.add(url);

            try {
                Document document = Jsoup.connect(url).get();
                Elements links = document.select("a[href]");

                for (Element link : links) {
                    String linkHref = link.attr("abs:href");
                    if (!visitedLinks.contains(linkHref)) {
                        System.out.println(linkHref);
                        extractLinksRecursively(linkHref, depth + 1);
                    }
                }
            } catch (IOException e) {
                // Handle any exceptions that occur while fetching the page
                e.printStackTrace();
            }
        }
    }
}

```
``` นำเข้า java.io.IOException; นำเข้า java.util.HashSet; นำเข้า java.util.Set; นำเข้า org.jsoup.Jsoup; นำเข้า org.jsoup.nodes.Document; นำเข้า org.jsoup.nodes.Element; นำเข้า org.jsoup.select.Elements; RecursiveLinkExtractor คลาสสาธารณะ { ชุดคงที่ส่วนตัว visitLinks = HashSet ใหม่ <>(); โมฆะคงที่สาธารณะ main (String [] args) { String beginningUrl = "https://example.com/"; extractLinksRecursively (Url เริ่มต้น, 0); } } โมฆะส่วนตัวแบบคงที่ extractLinksRecursively (URL สตริง, ความลึก int) { ถ้า (ความลึก> 5) { // จำกัด ความลึกเพื่อหลีกเลี่ยงการเรียกซ้ำไม่สิ้นสุด; } ถ้า (!visitedLinks.contains(url)) { visitLinks.add(url); ลอง { Document document = Jsoup.connect(url).get(); ลิงก์องค์ประกอบ = document.select("a[href]"); สำหรับ (ลิงก์องค์ประกอบ : ลิงก์) { สตริง linkHref = link.attr("abs:href"); ถ้า (!visitedLinks.contains(linkHref)) { System.out.println(linkHref); extractLinksRecursively (linkHref, ความลึก + 1); } } } catch (IOException e) { // จัดการข้อยกเว้นใดๆ ที่เกิดขึ้นขณะดึงข้อมูลเพจ e.printStackTrace(); } } } } ```
spam lang_mismatch quality