Wget的URL包含#


11

我想下载一个URL就是喜欢http://www.somesite.com/restaurants.html#photo=22x00085

我将其放在单引号之间,但它仅下载http://www.somesite.com/restaurants.html,这不是正确的页面。

有解决方案吗?


现在无法测试,但据我所知%20适用于空间,因此%23可能适用于#(%23是#的百分比编码)
lupincho 2012年

3
是不是同一HTML文件?#可能只是告诉Web浏览器跳到页面的特定部分。
barlop 2012年

Answers:


20

wget工作正常。的URI语法指定了片段 -的#foo部分-被解释完全客户端,并检索文件本身时不使用。

例如,如果它是HTML页面,则浏览器可能会向下滚动到命名部分,或者(对于您而言)触发一些显示特定照片的JavaScript代码。

换句话说,就所wget涉及的URI而言

  • http://www.somesite.com/restaurants.html#photo=22x00085
  • http://www.somesite.com/restaurants.html

... 指向同一页面 /restaurants.html。其余的工作由您的浏览器决定。restaurants.html#photo=22x00085在浏览器中打开应该可以正常工作。


8

如果不访问正确的链接,我将无法确定它是哪一个,但是只有两种选择:


我已经看到许多网站都以这种方式滥用URL片段。排在首位的是Google自己。这违反了一大堆RFC,但是似乎没有那么多人关心,因为“它起作用” ...
Michael Hampton

1
@MichaelHampton:您能确切指出它违反了哪些RFC吗?
user1686

@grawity RFC 2396,第2.4.3部分可以读为#不属于任何URI。这在RFC 3986中似乎放宽了,因为它不够明确,无法定义任何内容。
Rich Homolka '10 -10-17

1
@RichHomolka:它只说“ foo#bar”实际上称为“ URI参考”,它由URI(用于数据检索)和片段(解释给用户代理)组成。仅当片段实际上是在HTTP请求中发送时,才会违反该规则。
user1686

0

那不是图像的URL。这是使用脚本或其他代码来获取图像的页面的URL。尝试在关闭JavaScript的情况下加载页面。这就是wget为您获取的东西。

要查找图像的URL,请尝试通过浏览器访问页面,然后右键单击照片。应该有一个选项来查看有关图像的信息,包括其URL。

如果这不起作用,则可能是因为图像是通过Flash或其他客户端程序加载的。您可以使用Fiddler或Wireshark来查看其加载的URL。

如果您提供带有图片的网站的实际URL,我们可以帮助您确定图片的加载方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.