ฉันจะใช้ Wget เพื่อดาวน์โหลดภาพทั้งหมดลงในโฟลเดอร์เดียวจาก URL ได้อย่างไร


137

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

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

คำตอบ:


197

ลองสิ่งนี้:

wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

นี่คือข้อมูลเพิ่มเติมบางส่วน:

-ndป้องกันการสร้างลำดับชั้นของไดเร็กทอรี (กล่าวคือไม่มีไดเร็กทอรี )

-rเปิดใช้งานการเรียกซ้ำ ดูการดาวน์โหลดแบบเรียกซ้ำสำหรับข้อมูลเพิ่มเติม

-P ตั้งค่าคำนำหน้าไดเร็กทอรีที่บันทึกไฟล์และไดเร็กทอรีทั้งหมด

-Aกำหนดรายการที่อนุญาตพิเศษสำหรับการดึงไฟล์บางประเภทเท่านั้น ยอมรับสตริงและรูปแบบและสามารถใช้ทั้งสองอย่างในรายการที่คั่นด้วยจุลภาค (ดังที่เห็นด้านบน) ดูประเภทของไฟล์สำหรับข้อมูลเพิ่มเติม


5
สิ่งนี้ไม่ได้ผลสำหรับฉันจริงๆ ตำแหน่งบันทึกของฉันคือ "." และคัดลอกลำดับชั้นของไซต์ทั้งหมดไว้ที่นั่น
Buttle Butkus

2
@ButtleButkus ดูเหมือนคุณต้องรับประทานอาหารรอบมากขึ้นอีกนิดด้วยการยอมรับ-Aตัวเลือกดูเอกสาร Wget เกี่ยวกับประเภทของไฟล์ นอกจากนี้หากคุณกำลังดาวน์โหลดไปยังไดเรกทอรีปัจจุบันคุณสามารถลบ-Pตัวเลือกคำนำหน้าไดเรกทอรีได้ หากคุณกำลังดาวน์โหลดไฟล์ประเภทเดียวเช่น JPG wget -r -A.jpg http://www.domain.comเท่านั้นของบางสิ่งบางอย่างเช่นการใช้งาน ดูตัวอย่างขั้นสูงที่เอกสาร Wget มีให้
จอน

การเพิ่ม -nd ข้างต้นทำให้มันใช้งานได้ คุณยังสามารถระบุแฟล็ก -A ได้หลายรายการเช่น-A "*foo*" -A "*bar*"
Yablargo

1
อย่าลืมที่จะใช้--level=infหรือ--level=9999999999เพราะwgetมีแนวโน้มที่จะก่อวินาศกรรมงานเนื่องจากการเริ่มต้นในระดับความลึก recursion 5สูงสุด
user619271

131
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
  • -nd: ไม่มีไดเร็กทอรี (บันทึกไฟล์ทั้งหมดลงในไดเร็กทอรีปัจจุบัน-P directoryเปลี่ยนไดเร็กทอรีเป้าหมาย)
  • -r -l 2: เรียกซ้ำระดับ 2
  • -A: ส่วนขยายที่ยอมรับ
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
  • -H: span โฮสต์ (wget ไม่ดาวน์โหลดไฟล์จากโดเมนหรือโดเมนย่อยต่างๆตามค่าเริ่มต้น)
  • -p: ข้อกำหนดของเพจ (รวมถึงแหล่งข้อมูลเช่นรูปภาพในแต่ละเพจ)
  • -e robots=off: ดำเนินการคำสั่งrobotos=offราวกับว่าเป็นส่วนหนึ่งของ.wgetrcไฟล์ การดำเนินการนี้จะปิดการยกเว้นโรบ็อตซึ่งหมายความว่าคุณไม่สนใจ robots.txt และเมตาแท็กของโรบ็อต (คุณควรทราบผลกระทบที่มาพร้อมกับการดูแล)

ตัวอย่าง: รับ.jpgไฟล์ทั้งหมดจากรายการไดเร็กทอรีที่เป็นแบบอย่าง:

$ wget -nd -r -l 1 -A jpg http://example.com/listing/


9

ลองอันนี้:

wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com

และรอจนกว่าจะลบข้อมูลเพิ่มเติมทั้งหมด


มันไม่ได้ผลสำหรับฉัน wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
Vivo

5

ตามหน้าคนแฟล็ก -P คือ:

-P คำนำหน้า --directory-prefix = คำนำหน้าตั้งค่าคำนำหน้าไดเรกทอรีเป็นคำนำหน้า คำนำหน้าไดเร็กทอรีคือไดเร็กทอรีที่ไฟล์และไดเร็กทอรีย่อยอื่น ๆ ทั้งหมดจะถูกบันทึกไว้ที่ด้านบนสุดของแผนผังการดึงข้อมูล ค่าเริ่มต้นคือ (ไดเร็กทอรีปัจจุบัน)

ซึ่งหมายความว่าระบุปลายทางเท่านั้น แต่จะบันทึกโครงสร้างไดเร็กทอรีไว้ที่ใด ไม่ได้ทำให้ต้นไม้แบนราบลงในไดเรกทอรีเดียว ดังที่ได้กล่าวไว้ก่อนแฟล็ก -nd ทำเช่นนั้นจริง

@ จอนในอนาคตมันจะเป็นประโยชน์ในการอธิบายว่าแฟล็กทำอะไรเพื่อให้เราเข้าใจว่าบางอย่างทำงานอย่างไร


2

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

wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3

ในกรณีนี้ cut-dirs จะป้องกันไม่ให้ wget สร้างไดเรกทอรีย่อยจนถึงระดับความลึกระดับที่ 3 ในแผนผังลำดับชั้นของเว็บไซต์บันทึกไฟล์ทั้งหมดในไดเร็กทอรีที่คุณระบุคุณสามารถเพิ่ม 'cut-dirs' เพิ่มเติมด้วยตัวเลขที่สูงขึ้นได้หากคุณ กำลังจัดการกับไซต์ที่มีโครงสร้างลึก


-7

wget ยูทิลิตี้ดึงไฟล์จากเวิลด์ไวด์เว็บ (WWW) โดยใช้โปรโตคอลที่ใช้กันอย่างแพร่หลายเช่น HTTP, HTTPS และ FTP ยูทิลิตี้ Wget เป็นแพ็คเกจที่ใช้ได้ฟรีและใบอนุญาตอยู่ภายใต้ใบอนุญาต GNU GPL ยูทิลิตี้นี้สามารถติดตั้งระบบปฏิบัติการที่เหมือน Unix รวมถึง Windows และ MAC OS เป็นเครื่องมือบรรทัดคำสั่งที่ไม่โต้ตอบ คุณสมบัติหลักของ Wget คือความทนทาน ได้รับการออกแบบมาเพื่อให้ทำงานในการเชื่อมต่อเครือข่ายที่ช้าหรือไม่เสถียร Wget เริ่มการดาวน์โหลดโดยอัตโนมัติจากจุดที่ถูกทิ้งไว้ในกรณีที่เครือข่ายมีปัญหา ดาวน์โหลดไฟล์แบบวนซ้ำ จะพยายามต่อไปจนกว่าจะเรียกไฟล์ได้อย่างสมบูรณ์

ติดตั้ง wget ในเครื่อง linux sudo apt-get install wget

สร้างโฟลเดอร์ที่คุณต้องการดาวน์โหลดไฟล์ sudo mkdir myimages cd myimages

คลิกขวาที่หน้าเว็บและตัวอย่างเช่นหากคุณต้องการตำแหน่งรูปภาพให้คลิกขวาที่รูปภาพและคัดลอกตำแหน่งรูปภาพ หากมีหลายภาพให้ทำตามด้านล่าง:

หากมีภาพทั้งหมด 20 ภาพให้ดาวน์โหลดจากเว็บพร้อมกันช่วงเริ่มต้นจาก 0 ถึง 19

wget http://joindiaspora.com/img {0..19} .jpg


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