การใช้ Wget เพื่อทำการตระเวนไซต์ซ้ำและดาวน์โหลดภาพซ้ำ


13

คุณจะแนะนำให้คุณทำการตระเวนเว็บไซต์ซ้ำ ๆ และดาวน์โหลดเฉพาะภาพบางประเภทได้อย่างไร

ฉันพยายามใช้สิ่งนี้เพื่อตระเวนเว็บไซต์และดาวน์โหลดเฉพาะภาพ Jpeg:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

อย่างไรก็ตามถึงแม้ว่า page1.html จะมีลิงค์ไปยังหน้าย่อยหลายร้อยหน้าซึ่งตัวมันเองมีลิงค์โดยตรงไปยังรูปภาพ แต่ wget รายงานสิ่งต่าง ๆ เช่น "การลบ subpage13.html เนื่องจากมันควรถูกปฏิเสธ" และไม่ดาวน์โหลดภาพใด ๆ เนื่องจากไม่มีการเชื่อมโยงโดยตรงกับ จากหน้าเริ่มต้น

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

แก้ไข: นอกจากนี้บางหน้าเป็นแบบไดนามิกและสร้างขึ้นผ่านสคริปต์ CGI (เช่น img.cgi? fo9s0f989wefw90e) แม้ว่าฉันจะเพิ่ม cgi ลงในรายการที่ฉันยอมรับ (เช่น --accept = jpg, jpeg, html, cgi) สิ่งเหล่านี้ก็ยังคงถูกปฏิเสธอยู่เสมอ มีวิธีแก้ไขไหม?

คำตอบ:


5

ทำไมคุณไม่ลองใช้wget -A jpg,jpeg -r http://example.comล่ะ


คำถามระบุว่ารูปภาพบางรูปมีรูปแบบ /url/path.cgi?query ดังนั้นคำแนะนำของคุณจะไม่สามารถดึงกลับมาได้
Charles Stewart

1

คุณคาดหวังได้อย่างไรว่าจะรู้เนื้อหาของ subpage13.html (และดังนั้น jpg จะเชื่อมโยงไปยัง) หากไม่ได้รับอนุญาตให้ดาวน์โหลด ฉันแนะนำให้คุณอนุญาต html รับสิ่งที่คุณต้องการจากนั้นลบสิ่งที่คุณไม่ต้องการ


ฉันไม่แน่ใจว่าทำไม cgi ของคุณถึงถูกปฏิเสธ ... มีข้อผิดพลาดใด ๆ จาก wget หรือไม่ อาจทำให้ verbose wget ( -v) และดู อาจดีที่สุดเป็นคำถามแยกต่างหาก

ที่กล่าวว่าหากคุณไม่สนใจแบนด์วิดท์และดาวน์โหลดล็อตให้ลบสิ่งที่คุณไม่ต้องการออกแล้วไม่สำคัญ


ยังตรวจสอบ --html-extension

จากหน้าคน:

-E

--html นามสกุล

หากมีการดาวน์โหลดไฟล์ประเภท application / xhtml + xml หรือ text / html และ URL ไม่ได้ลงท้ายด้วย regexp [Hh] [Tt] [Mm] [Ll]? ตัวเลือกนี้จะทำให้ส่วนต่อท้าย. html เป็น ต่อท้ายชื่อไฟล์ท้องถิ่น สิ่งนี้มีประโยชน์เช่นเมื่อคุณกำลังทำมิเรอร์ไซต์ระยะไกลที่ใช้หน้า. asp แต่คุณต้องการให้หน้ามิเรอร์สามารถดูได้บนเซิร์ฟเวอร์ Apache หุ้นของคุณ การใช้งานที่ดีอีกอย่างนี้คือเมื่อคุณดาวน์โหลดวัสดุ CGI ที่สร้างขึ้น URL เช่นhttp://site.com/article.cgi?25จะถูกบันทึกเป็น article.cgi? 25.html

โปรดทราบว่าชื่อไฟล์ที่เปลี่ยนแปลงด้วยวิธีนี้จะถูกดาวน์โหลดใหม่ทุกครั้งที่คุณทำมิเรอร์ไซต์อีกครั้งเพราะ Wget ไม่สามารถบอกได้ว่าไฟล์ X.html โลคัลตรงกับ URL ระยะไกล X (เนื่องจากยังไม่ทราบว่า URL สร้างผลลัพธ์ประเภท text / html หรือ application / xhtml + xml เพื่อป้องกันการดาวน์โหลดซ้ำนี้คุณจะต้องใช้ -k และ -K เพื่อให้ไฟล์ต้นฉบับนั้นถูกบันทึกเป็น X.orig


--restrict-file-names=unix อาจเป็นประโยชน์เนื่องจาก URL cgi เหล่านั้น ...


ฉันควรหยุดการเชื่อมโยงตัวเลือก wget .. กำลังจะชี้ให้เห็น--no-parentแต่ฉันจะหยุดที่นั่น
แพ่งราคา


-1

ลองเพิ่ม--page-requisitesตัวเลือก


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