0

我正在尝试进行一些网络爬虫,但遇到了何时添加斜杠的问题。我知道有些网站最后确实有它,而有些则没有,但在浏览器中输入错误的网站只会将您重定向到正确的网站。规范化会在末尾添加斜杠,但在尝试将相对 URL 转换为绝对 URL 时会导致问题。

例如,如果用户选择了绝对 URL http://stack.com/more,但实际(重定向)URL 是http://stack.com/more/,而相对 URL 是index.html

然后做URL newurl = new URL(url, relativeURL);

产量http://stack.com/index.html(不存在的页面)

什么时候应该是http://stack.com/more/index.html(真实页面)

有谁知道在末尾正确附加斜线的好方法?

4

1 回答 1

4

如果相对 URL 以 a 开头/,则它仅相对于根(域)。所以两者

http://stack.com/more/ + /index.html

http://stack.com/more + /index.html

正确解析为

http://stack.com/index.html

不是

http://stack.com/more/index.html

/在您的示例中,无论more.

当相对 URL 上没有前导斜杠时,技巧就出现了,例如index.html. 解决这些问题时,您应该删除最后一段并将其替换为相对路径。在这种情况下会有所不同,因为

http://stack.com/more/ + index.html

解决为

http://stack.com/more/index.html

http://stack.com/more + index.html

解决为

http://stack.com/index.html

index.html替换more,因为more是最后一段)。

于 2012-11-06T11:08:21.263 回答