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, який показує конкретну фотографію.

Іншими словами, що wgetстосується URI

  • 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 вони порушують?
користувач1686

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

1
@RichHomolka: Це говорить лише про те, що "foo # bar" насправді називається "URI-довідкою", що складається з URI (використовується для пошуку даних) та фрагмента (інтерпретація, залишена користувачеві-агенту). Це було б порушено лише в тому випадку, якщо фрагмент був би фактично надісланий у запиті HTTP.
користувач1686

0

Це не URL-адреса для зображення. Це URL-адреса сторінки, яка використовує скрипт або інший код для отримання зображення. Спробуйте завантажити сторінку з вимкненим JavaScript. Це те, що wget виходить для вас.

Щоб знайти URL-адресу для зображення, спробуйте відвідати сторінку через веб-переглядач і натисніть правою кнопкою миші на фотографії. Повинна бути можливість перегляду інформації про зображення, включаючи його URL-адресу.

Якщо це не працює, це може бути тому, що зображення завантажується через Flash або якусь іншу програму на стороні клієнта. Ви можете використовувати Fiddler або Wireshark, щоб переглянути, яку URL-адресу завантажують.

Якщо ви надасте нам фактичну URL-адресу сайту із зображенням, ми можемо допомогти вам визначити, як завантажується зображення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.