背景资料:
我正在尝试在Groovy中构建一个非常简单的Web爬虫。在给定单个URL地址的情况下,它将下载关联的网页以及从该页面链接的所有页面。
在HTML代码中的链接中,URL地址有时会缩写。我想到了三种不同的URL类型:
但我知道Web应用程序可以实现任意URL路由,因此URL地址可能根本不会反映文件系统的结构。
我的问题:
当用户点击网页中的链接时,网络浏览器如何知道要求的网址?或者,当我的抓取工具在网页中找到链接时,如何知道要下载哪个网页?
对于可用于解析URL的可用Groovy库的任何提示也将不胜感激。
答案 0 :(得分:2)
浏览器根据URL规范解析相对URL(包括相对于服务器根目录的URL,例如/fruit/orange.html),请参阅当前RFC 3986的Internet标准STD 66。除了一般注意事项外,如果存在,他们需要考虑<base href=...>
标签。
这与文件系统无关。如果URL恰好映射到服务器中的文件,那么它就是服务器内部的文件。
规范网址是不同的。使用带有link
的{{1}}元素,页面可以指定其规范URL,例如,应该在搜索引擎中使用该URL。参见例如http://googlewebmastercentral.blogspot.fi/2009/02/specify-your-canonical.html
答案 1 :(得分:1)
标准库中提供的java.net.URI类提供了通过URI #resolution(String)方法解析相对引用的方法。