我正在尝试进行一些网络抓取,但我遇到了何时添加斜杠的问题。我知道有些网站最终会有它,而有些则没有,但在浏览器中输入错误的网站只会将您重定向到正确的网站。规范化会在结尾处添加斜杠,但在尝试将相对URL转换为绝对时会导致问题。
例如,如果用户选择绝对网址http://stack.com/more
,但实际(重定向)网址为http://stack.com/more/
且相对网址为index.html
然后执行URL newurl = new URL(url, relativeURL);
产生http://stack.com/index.html
(不存在的页面)
实际应该是http://stack.com/more/index.html
(真实页面)
Doese有谁知道在最后正确追加斜线的好方法?
答案 0 :(得分:4)
如果相对URL以/
开头,则仅相对于根(域)。所以两者
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
是最后一段。)