繁体   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