Wget với URL có chứa #


11

Tôi đang cố tải xuống URL nó giống như http://www.somesite.com/restaurants.html#photo=22x00085.

Tôi đặt nó ở giữa các dấu ngoặc đơn, nhưng nó chỉ tải xuống http://www.somesite.com/Jets.html đó không phải là trang chính xác.

Có một giải pháp?


không thể kiểm tra điều này ngay bây giờ, nhưng từ những gì tôi nhớ% 20 hoạt động cho không gian, vì vậy% 23 có thể sẽ hoạt động cho # (% 23 là mã hóa phần trăm cho #)
lupincho

3
không phải là cùng một tệp HTML sao? Số # có thể chỉ cho trình duyệt web chuyển đến một phần cụ thể của trang.
barlop

Câu trả lời:


20

wget đang hoạt động tốt Các Cú pháp URI chỉ định rằng miếng - các #foo một phần - sẽ được giải thích hoàn toàn về phía khách hàng và không được sử dụng khi lấy chính tài liệu đó.

Ví dụ: nếu đó là trang HTML, trình duyệt có thể cuộn xuống phần được đặt tên hoặc - trong trường hợp của bạn - kích hoạt một số mã JavaScript hiển thị một ảnh cụ thể.

Nói cách khác, theo như wget có liên quan, các URI

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

... chỉ vào cùng một trang /restaurants.html. Tùy thuộc vào trình duyệt của bạn để làm phần còn lại. Khai mạc restaurants.html#photo=22x00085 trong trình duyệt nên hoạt động tốt.


8

Không truy cập liên kết thích hợp, tôi không thể biết đó là liên kết nào, nhưng chỉ có hai tùy chọn:

  • Hàm băm thực sự là một phần của tên tài liệu được yêu cầu. Trong trường hợp này, bạn có thể mã hóa nó:

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

  • Trong trường hợp khác, trong hoàn cảnh bình thường, http://www.somesite.com/Jets.html http://www.somesite.com/Jets.html#photo=22x00085 nên trỏ đến cùng một trang. Phần sau hàm băm chỉ đơn giản là mỏ neo trình duyệt sẽ cuộn đến sau khi tải trang; nó thậm chí không được gửi đến máy chủ.

    Tuy nhiên, nó có thể, hàm băm là (ab) được sử dụng để tải một ảnh cụ thể bằng JavaScript. Wget không thể giải thích JavaScript, vì vậy bạn không thể làm gì về nó.


Tôi đã thấy nhiều trang web lạm dụng đoạn URL theo cách này; đứng đầu danh sách là chính Google. Điều này vi phạm cả đống RFC, nhưng dường như không nhiều người quan tâm, vì "nó hoạt động" ...
Michael Hampton

1
@MichaelHampton: Bạn có thể chỉ ra chính xác RFC nào vi phạm không?
grawity

@grawity RFC 2396, phần 2.4.3 có thể được đọc để nói # không phải là một phần của bất kỳ URI nào. Điều này dường như được nới lỏng trong RFC 3986, đủ mơ hồ để không định nghĩa bất cứ điều gì.
Rich Homolka

1
@RichHomolka: Nó chỉ nói rằng "foo # bar" thực sự được gọi là "URI-Reference", bao gồm URI (được sử dụng để truy xuất dữ liệu) và đoạn (giải thích để lại cho tác nhân người dùng). Nó sẽ bị vi phạm chỉ khi đoạn thực sự được gửi trong yêu cầu HTTP.
grawity

0

Đó không phải là URL cho hình ảnh. Đó là URL cho một trang sử dụng tập lệnh hoặc mã khác để tìm nạp hình ảnh. Hãy thử tải trang với JavaScript đã tắt. Đó là những gì wget đang tìm nạp cho bạn.

Để tìm URL cho hình ảnh, hãy thử truy cập trang thông qua trình duyệt của bạn và sau đó nhấp chuột phải vào ảnh. Cần có một tùy chọn để xem thông tin về hình ảnh, bao gồm URL của nó.

Nếu điều đó không hoạt động, có thể là do hình ảnh đang được tải thông qua Flash hoặc một số chương trình phía máy khách khác. Bạn có thể sử dụng Fiddler hoặc Wireshark để xem URL nào đang tải.

Nếu bạn cung cấp cho chúng tôi URL thực tế của trang web bằng hình ảnh, chúng tôi có thể giúp bạn xác định cách hình ảnh được tải.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.