[英]How to extract links from a web content?
我已经下载了一个网页,并且想要提取该文件中的所有链接。 此链接包括绝对和亲戚。 例如,我们有:
<script type="text/javascript" src="/assets/jquery-1.8.0.min.js"></script>
要么
<a href="http://stackoverflow.com/" />
所以读完文件后该怎么办?
如果您要使用Java内置的regex系统,则要做的事情并不复杂。 困难的是找到合适的正则表达式来匹配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());
这样做是为您的线路和之前的URL匹配Pattern
创建一个Matcher
。 然后,它循环直到#find()
返回false(即没有更多匹配项)并将匹配项(带有#group()
)添加到列表urlsFound
。
在循环结束时, urlsFound
将包含页面上所有URL的所有匹配项。 请注意,如果您有很多文本,这可能会占用大量内存,因为urlsFound
会变得很大,并且您将创建和放弃很多Matcher
。
1:我通过Google快速搜索找到了一些不错的网站; 据我所知,这种作物的奶油似乎在这里和这里 。 您的需求可能会有所不同。
2:您需要确保使用单个组捕获整个URL,否则将根本无法使用。 但是,如果有多个部分,则可以对其进行调整以使其工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.