如何从Web内容中提取链接?

时间:2015-04-26 04:10:39

标签: java regex

我已经下载了一个网页,我想提取该文件中的所有链接。这个链接包括绝对和亲戚。例如我们有:

<script type="text/javascript" src="/assets/jquery-1.8.0.min.js"></script>

<a href="http://stackoverflow.com/" />

所以在阅读完文件后,我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你想使用Java内置的正则表达式系统,这并不复杂。硬位是找到正确的正则表达式来匹配URL [1] [2] 。为了回答,我会假设你已经完成了这项工作,并将其作为Pattern存储,其语法如下:

Pattern url = Pattern.compile("your regex here");

以及迭代每一行的某种方式。您要做的是定义ArrayList<String>

ArrayList<String> urlsFound = new ArrayList<>();

从那里开始,您将有一些循环来遍历您的文件(假设每一行都是<? extends CharSequence> line),并且在内部你会把它放在:

Matcher urlMatch = url.matcher(line);
while (urlMatch.find()) urlsFound.add(urlMatch.match());

这样做可以为您的专线创建Matcher,并为之前的网址匹配Pattern。然后,它循环直到#find()返回false(即,没有更多匹配)并将匹配(带#group())添加到列表urlsFound

在循环结束时,urlsFound将包含网页上所有网址的所有匹配项。请注意,如果您有大量文字,这可能会占用大量内存,因为urlsFound会变得非常大,并且您将创建并放弃大量Matcher秒。

1:我发现了一些a quick Google search的好网站;据我所知,作物的奶油似乎是herehere。您的需求可能会有所不同。

2:您需要确保使用单个组捕获整个网址,否则根本不会工作。但是,如果有多个部分,可以调整它。