簡體   English   中英

將抓取的網址轉換為真實網址的最安全方法是什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM