Wget с URL, который содержит #


11

Я пытаюсь загрузить URL, который похож http://www.somesite.com/restaurants.html#photo=22x00085.

Я помещаю его между одинарными кавычками, но он загружает только http://www.somesite.com/restaurants.html, который не является правильной страницей.

Есть ли решение?


Я не могу проверить это сейчас, но насколько я помню,% 20 работает для пробела, поэтому% 23, вероятно, будет работать для # (% 23 - это кодировка процента для #)
lupincho

3
Разве это не тот же файл HTML? # Может просто сказать веб-браузеру перейти на определенную часть страницы.
Барлоп

Ответы:


20

wgetработает нормально. В URI синтаксис указывает , что фрагмент - #fooчасть - это следует интерпретировать целиком на стороне клиента, а также не используется при получении самого документа.

Например, если это HTML-страница, браузер может прокрутить вниз до названного раздела или - в вашем случае - вызвать некоторый код JavaScript, который показывает конкретную фотографию.

Другими словами, что касается wgetURI

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

... указать на ту же страницу /restaurants.html . Все зависит от вашего браузера. Открытие restaurants.html#photo=22x00085в браузере должно работать нормально.


8

Не посетив нужную ссылку, я не могу сказать, какая это, но есть только два варианта:

  • Хеш фактически является частью имени запрашиваемого документа. В этом случае вы можете закодировать его:

    http://www.somesite.com/restaurants.html%23photo=22x00085

  • В другом случае при нормальных обстоятельствах http://www.somesite.com/restaurants.html и http://www.somesite.com/restaurants.html#photo=22x00085 должны указывать на одну и ту же страницу. Часть после хеша просто указывает на якорь, на который браузер должен перейти после загрузки страницы; он даже не отправляется на сервер.

    Тем не менее, это возможно, что хэш (аb) используется для загрузки конкретной фотографии с помощью JavaScript. Wget не может интерпретировать JavaScript, поэтому вы ничего не можете с этим поделать.


Я видел много сайтов, которые злоупотребляют фрагментом URL таким образом; В верхней части списка находится Google. Это нарушает целую кучу RFC, но не так много людей, кажется, заботятся, так как «это работает» ...
Майкл Хэмптон

1
@MichaelHampton: Не могли бы вы указать, какие именно RFC он нарушает?
user1686 15.10.12

@grawity RFC 2396, часть 2.4.3, можно прочитать, чтобы сказать # не является частью какого-либо URI. Это кажется ослабленным в RFC 3986, будучи достаточно расплывчатым, чтобы ничего не определять.
Богатая Гомолка

1
@RichHomolka: Это говорит только о том, что «foo # bar» на самом деле называется «URI-Reference», состоящий из URI (используется для извлечения данных) и фрагмента (интерпретация предоставлена ​​пользовательскому агенту). Это было бы нарушено, только если фрагмент фактически был отправлен в HTTP-запросе.
user1686

0

Это не URL для изображения. Это URL-адрес страницы, которая использует скрипт или другой код для извлечения изображения. Попробуйте загрузить страницу с отключенным JavaScript. Это то, что wget приносит вам.

Чтобы найти URL-адрес изображения, попробуйте зайти на страницу через браузер и щелкнуть правой кнопкой мыши фотографию. Должна быть возможность просмотра информации об изображении, включая его URL.

Если это не сработает, возможно, это связано с тем, что изображение загружается с помощью Flash или другой клиентской программы. Вы можете использовать Fiddler или Wireshark, чтобы посмотреть, какой URL загружается.

Если вы дадите нам фактический URL-адрес сайта с изображением, мы поможем вам определить способ загрузки изображения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.