[英]What is the safest way to convert scraped URLs to real URLs?
我刮了一個網站,然后在頁面上找到以下鏈接:
index.html
bla.html
/index.html
A.com/test.html
http://wwww.B.com/bla.html
如果我知道當前頁面為www.A.com/some/path,則如何有效地將這些鏈接轉換為“真實的Urls”。 因此,在每種情況下,URL都應轉換為:
index.html => http://www.A.com/some/path/index.html
bla.html => http://www.A.com/some/path/bla.html
/index.html => http://www.A.com/index.html
A.com/test.html => http://www.A.com/test.html
http://wwww.B.com/bla.html => http://wwww.B.com/bla.html
將這些頁面鏈接轉換為完全限定的URL名稱的最有效方法是什么?
使用java.net.URL
類:
URL BASE_PATH = new URL("http://www.A.com/some/path");
String RELATIVE_PATH = "index.html";
URL absolute = new URL(BASE_PATH, RELATIVE_PATH);
它將根據基本路徑解析相對URL。 如果相對URL實際上是絕對URL,它將返回它。
@Brigham的答案是正確的但不完整。
問題在於,您從中抓取URL的頁面可能在<head>
包含一個<base>
元素。 該基本URL可能與您從中獲取頁面的URL 明顯不同。
例如:
<!DOCTYPE html>
<html>
<head>
<base href="http://www.example.com/">
...
</head>
<body>
...
</body>
</html>
在...
部分中,將相對於base
URL而不是原始頁面URL解析任何相對URL。
這意味着如果要在所有情況下都正確解析“已抓取”的URL,則在“抓取”時還需要查找任何<base>
元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.