ลองด้วย URL ที่มี #


11

ฉันกำลังพยายามดาวน์โหลดURLที่เป็นเช่นhttp://www.somesite.com/restaurants.html#photo=22x00085นั้น

ฉันใส่ไว้ในเครื่องหมายอัญประกาศเดี่ยว แต่ดาวน์โหลดได้เฉพาะhttp://www.somesite.com/restaur.htmlซึ่งไม่ใช่หน้าที่ถูกต้อง

มีวิธีแก้ไขไหม?


ไม่สามารถทดสอบได้ในตอนนี้ แต่จากสิ่งที่ฉันจำได้ว่า% 20 ใช้ได้กับพื้นที่ดังนั้น% 23 อาจใช้ได้กับ # (% 23 คือการเข้ารหัสเปอร์เซ็นต์สำหรับ #)
lupincho

3
ไม่ใช่ไฟล์ HTML เดียวกันใช่ไหม # อาจบอกเว็บเบราว์เซอร์เพื่อข้ามไปยังส่วนใดส่วนหนึ่งของหน้า
barlop

คำตอบ:


20

wgetทำงานได้ดี URI ไวยากรณ์ระบุว่าชิ้นส่วน - เดอะ#fooส่วนหนึ่ง - จะต้องตีความอย่างสิ้นเชิงฝั่งไคลเอ็นต์และไม่ได้ใช้เมื่อดึงเอกสารเอง

ตัวอย่างเช่นหากเป็นหน้า HTML เบราว์เซอร์อาจเลื่อนลงไปที่ส่วนที่มีชื่อหรือ - ในกรณีของคุณจะทริกเกอร์โค้ด JavaScript บางรายการที่แสดงรูปภาพเฉพาะ

ในคำอื่น ๆ เท่าที่wgetเกี่ยวข้อง URIs

  • 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/restaur.htmlและhttp://www.somesite.com/restaurants.html#photo=22x00085ควรชี้ไปที่หน้าเดียวกัน ส่วนหลังแฮชเพียงแค่ระบุสมอที่เบราว์เซอร์ควรเลื่อนไปหลังจากโหลดหน้าเว็บ มันไม่ได้ถูกส่งไปยังเซิร์ฟเวอร์

    อย่างไรก็ตามเป็นไปได้ว่าแฮชนั้น (ab) ใช้ในการโหลดภาพถ่ายโดยใช้ JavaScript Wget ไม่สามารถแปล JavaScript ดังนั้นจึงไม่มีอะไรที่คุณสามารถทำได้


ฉันเคยเห็นหลายเว็บไซต์ที่ใช้ URL ในทางที่ไม่เหมาะสม ที่ด้านบนของรายการคือ Google เอง นี้ละเมิดทั้งกลุ่มของ RFCs แต่ไม่ได้ว่าหลายคนดูเหมือนจะดูแลตั้งแต่ "มันทำงาน" ...
ไมเคิลแฮมป์ตัน

1
@MichaelHampton: คุณช่วยชี้ให้เห็นว่า RFC ใดที่ละเมิด?
user1686

@grawity RFC 2396, ส่วน 2.4.3 สามารถอ่านได้ว่า # ไม่ใช่ส่วนหนึ่งของ URI สิ่งนี้ดูเหมือนว่าจะผ่อนคลายใน RFC 3986 มีความคลุมเครือมากพอที่จะไม่นิยามอะไร
Rich Homolka

1
@RichHomolka: มันบอกแค่ว่า "foo # bar" นั้นเรียกว่า "URI-Reference" ซึ่งประกอบด้วย URI (ใช้สำหรับการดึงข้อมูล) และแฟรกเมนต์ (การตีความที่ยังเหลือตัวแทนผู้ใช้) มันจะถูกละเมิดก็ต่อเมื่อมีการส่งแฟรกเมนต์ในคำขอ HTTP จริง ๆ เท่านั้น
user1686

0

นั่นไม่ใช่ URL สำหรับรูปภาพ เป็น URL สำหรับหน้าเว็บที่ใช้สคริปต์หรือรหัสอื่นเพื่อดึงภาพ ลองโหลดหน้าเว็บโดยปิด JavaScript นั่นคือสิ่งที่ wget ดึงมาให้คุณ

หากต้องการค้นหา URL สำหรับภาพลองเข้าไปที่หน้าเว็บผ่านเบราว์เซอร์ของคุณแล้วคลิกขวาที่รูปภาพ ควรมีตัวเลือกในการดูข้อมูลเกี่ยวกับรูปภาพรวมถึง URL

หากไม่สามารถใช้งานได้อาจเป็นเพราะรูปภาพกำลังโหลดผ่าน Flash หรือโปรแกรมฝั่งไคลเอ็นต์อื่น ๆ คุณสามารถใช้ Fiddler หรือ Wireshark เพื่อดู URL ที่กำลังโหลด

หากคุณให้ภาพที่แท้จริงกับเว็บไซต์ของเราเราสามารถช่วยคุณกำหนดวิธีการโหลดรูปภาพ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.