JSOUP 仅抓取子页面/无外部链接

我有以下代码,我正在尝试抓取一个网站 - 但只有子页面(或相关链接)。我不想抓取导致外部网站的链接。我正在使用 Java 和 jsoup。


public void scrape(String url) {


    String docUrl = url;


    try {


        Document document = Jsoup.connect(docUrl).get();

        Elements foundUrls = document.select("a[href]");


        System.out.printf("Found %d links. %n", foundUrls.size());


        for (Element  foundUrl : foundUrls) {



            String nextUrl = foundUrl.attr("href");


            if (visitedLinks.contains(nextUrl)) {

                System.out.println("Link already visited. Skipping URL.");

            }


            else {


                System.out.println("Scraping: "+ nextUrl);

                visitedLinks.add(nextUrl);

                scrape(nextUrl);

            }


        }

    } catch (Exception ex) {


        System.out.printf("Could not read %s.%n", url);

    }

}

有人能告诉我如何只抓取页面的子页面 - 所以没有外部链接吗?


慕的地6264312
浏览 165回答 1
1回答

杨__羊羊

您需要修改代码,以便检查不仅要查看在抓取之前是否已访问该链接,还要查看该链接是否为站内链接。所以if语句应该改为:if (visitedLinks.contains(nextUrl) || !isInSiteLink(nextUrl) {    // don't scrape} else {    // your scraping method here}然后你必须实现该方法。它可能看起来像boolean isInSiteLink(String url) {    return (url.starts with(baseUrl) || url.startsWith("/") || url.starts with("./") || url.starts with("../"));}baseUrl站点的基本 URL在哪里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java