使用Java获取网站上所有URL的列表[关闭]

问题描述 投票:-1回答:2

[有许多库(例如Jsoup)可以随时执行此任务,但是如何不使用任何外部库如何使用Java获取任何网站的HTML内容中存在的所有URL?

编辑1:谁能解释Scanner.useDelimiter(“ \ Z”)的实际作用,以及Scanner.useDelimiter(“ \ Z”)和Scanner.useDelimiter(“ \ z”)的区别是什么。

java spring web-scraping web-crawler java.util.scanner
2个回答
2
投票

我正在尝试在StackOverflow上找到准确答案,但找不到答案,我正在回答自己的问题。

这里是代码:

URL url;
ArrayList<String> finalResult = new ArrayList<String>();

try {
    String content = null;
    URLConnection connection = null;
    try {
        connection = new URL("https://yahoo.com").openConnection();
        Scanner scanner = new Scanner(connection.getInputStream());
        scanner.useDelimiter("\\Z");
        content = scanner.next();
        scanner.close();
        } catch (Exception ex) {
              ex.printStackTrace();
        }



    String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(content);
    while (m.find()) {
    if(!finalResult.contains((m.group())))
      finalResult.add(m.group());
    }
} finally {
   for(String res: finalResult){
       System.out.println(res);
    }
}

1
投票

您可以尝试使用regEx。这是一个regEx的示例,该示例检查是否有任何测试是URL。https://www.regextester.com/96504.

但是我无法停止说Jsoup正是适合这个。但这是一个外部库。

© www.soinside.com 2019 - 2024. All rights reserved.