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

问题描述 投票:-1回答:2
[有许多库(例如Jsoup)可以随时执行此任务,但是如何不使用任何

外部库如何使用Java获取任何网站的HTML内容中存在的所有URL?

编辑1:任何人都可以解释scan..useDelimiter(“ \ Z”)的实际作用,以及scanner.useDelimiter(“ \ Z”)和scanner.useDelimiter(“ \ z”)的区别是什么。
java 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.