Wget z adresem URL, który zawiera #

11

Próbuję pobrać podobny adres URLhttp://www.somesite.com/restaurants.html#photo=22x00085 .

Umieszczam go pomiędzy pojedynczymi cudzysłowami, ale pobiera tylko http://www.somesite.com/restaurants.html, co nie jest poprawną stroną.

Czy jest jakieś rozwiązanie?

użytkownik1289749
źródło
nie mogę teraz tego przetestować, ale z tego co pamiętam% 20 działa dla przestrzeni, więc% 23 prawdopodobnie działałoby dla # (% 23 to kodowanie procentowe dla #)
lupincho
3
czy to nie ten sam plik HTML? # Może po prostu powiedzieć przeglądarce internetowej, aby przejść do określonej części strony.
barlop

Odpowiedzi:

20

wgetdziała dobrze. Przez Uri Składnia Określa, że fragment - w #fooczęści - należy interpretować w całości po stronie klienta, a nie wykorzystywane przy pobieraniu samym dokumencie.

Na przykład, jeśli jest to strona HTML, przeglądarka może przewinąć w dół do nazwanej sekcji lub - w twoim przypadku - uruchomić kod JavaScript pokazujący określone zdjęcie.

Innymi słowy, jeśli chodzi wgeto URI

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

... wskaż tę samą stronę /restaurants.html . Reszta zależy od przeglądarki. Otwieranie restaurants.html#photo=22x00085w przeglądarce powinno działać poprawnie.

użytkownik1686
źródło
8

Bez odwiedzenia odpowiedniego linku nie mogę powiedzieć, który to jest, ale są tylko dwie opcje:

Dennis
źródło
Widziałem wiele witryn, które w ten sposób nadużywają fragmentu adresu URL; na górze listy znajduje się sam Google. To narusza całą masę RFC, ale wydaje się, że nie obchodzi to wielu ludzi, ponieważ „to działa” ...
Michael Hampton
1
@MichaelHampton: Czy możesz wskazać, które RFC narusza?
user1686,
@grawity RFC 2396, część 2.4.3 można przeczytać, że # nie jest częścią żadnego identyfikatora URI. Wydaje się to złagodzić w RFC 3986, ponieważ jest na tyle niejasne, że niczego nie definiuje.
Rich Homolka
1
@RichHomolka: Mówi tylko, że „foo # bar” jest tak naprawdę nazywany „odnośnikiem URI”, składającym się z URI (używanego do wyszukiwania danych) i fragmentu (interpretacja pozostawiona klientowi użytkownika). Zostałby naruszony tylko wtedy, gdyby fragment został faktycznie wysłany w żądaniu HTTP.
user1686,
0

To nie jest adres URL obrazu. Jest to adres URL strony używającej skryptu lub innego kodu do pobrania obrazu. Spróbuj załadować stronę z wyłączonym JavaScript. To właśnie dla ciebie wget pobiera.

Aby znaleźć adres URL obrazu, spróbuj odwiedzić stronę w przeglądarce, a następnie kliknij zdjęcie prawym przyciskiem myszy. Powinna istnieć możliwość przeglądania informacji o obrazie, w tym jego adresu URL.

Jeśli to nie działa, może to być spowodowane tym, że obraz jest ładowany przez Flash lub inny program po stronie klienta. Możesz użyć Fiddlera lub Wiresharka, aby zobaczyć, jaki adres URL się ładuje.

Jeśli podasz nam rzeczywisty adres URL witryny z obrazem, możemy pomóc Ci ustalić, w jaki sposób obraz jest ładowany.

Jeremy Stein
źródło