[英]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.