วิธีดาวน์โหลดไฟล์ทั้งหมด (แต่ไม่ใช่ HTML) จากเว็บไซต์โดยใช้ wget


162

วิธีใช้wgetและรับไฟล์ทั้งหมดจากเว็บไซต์?

ฉันต้องการไฟล์ทั้งหมดยกเว้นไฟล์หน้าเว็บเช่น HTML, PHP, ASP เป็นต้น


แม้ว่าคุณต้องการที่จะดาวน์โหลด php มันเป็นไปไม่ได้โดยใช้ wget เราสามารถรับ HTML แบบ raw เท่านั้นโดยใช้ wget ฉันเดาว่าคุณรู้เหตุผล
Venkateshwaran Selvaraj

หมายเหตุ:โปรดตรวจสอบกับwget --spiderคนแรกเสมอและเพิ่ม-w 1(หรือมากกว่า-w 5) เพื่อที่คุณจะไม่ทำให้เซิร์ฟเวอร์ของบุคคลอื่นท่วม
isomorphismes

1
ฉันจะดาวน์โหลดไฟล์ pdf ทั้งหมดในหน้านี้ได้อย่างไร pualib.com/collection/pua-titles-a.html

Stack Overflow เป็นเว็บไซต์สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ได้อยู่ที่หัวข้อเพราะไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อใดบ้างที่ฉันสามารถถามเกี่ยวกับที่นี่ในศูนย์ช่วยเหลือ บางทีผู้ใช้ระดับสูงหรือUnix & Linux Stack Exchangeอาจเป็นที่ที่ดีกว่า ดูที่ฉันจะโพสต์คำถามเกี่ยวกับ Dev Ops ได้ที่ไหน
jww

คำตอบ:


262

หากต้องการกรองไฟล์นามสกุลเฉพาะ:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

หรือหากคุณต้องการชื่อตัวเลือกแบบยาว:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

นี่จะทำมิเรอร์ไซต์ แต่ไฟล์ที่ไม่มี jpgหรือpdfนามสกุลจะถูกลบโดยอัตโนมัติ


17
หากคุณเพียงต้องการดาวน์โหลดไฟล์ที่ไม่มีสถาปัตยกรรมไดเรกทอรีทั้งหมดคุณสามารถใช้ตัวเลือก-nd
diabloneo

4
แต่ละธงหมายถึงอะไร
Jürgen Paul

ฉันคิดว่าตรงตามตัว--acceptพิมพ์ใหญ่ - เล็กดังนั้นคุณต้องทำ--accept pdf,jpg,PDF,JPG
Flimm

8
ไม่แน่ใจว่าเป็นรุ่นใหม่หรือไม่wgetแต่คุณต้องระบุ--progressประเภทเช่น--progress=dot
jamis

@Flimm คุณยังสามารถใช้การ--ignore-caseตั้งค่าสถานะเพื่อทำให้--acceptกรณีตาย
รุนแรง

84

นี่เป็นการดาวน์โหลดเว็บไซต์ทั้งหมดสำหรับฉัน:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/

20
+1 สำหรับ-e robots=off! ในที่สุดนี้ก็แก้ไขปัญหาของฉัน! :) ขอบคุณ
NHDaly

12
--random-waitตัวเลือกที่เป็นอัจฉริยะ;)
poitroae

2
@izilotti เจ้าของไซต์จะทราบได้อย่างไรว่าคุณ WGET ไฟล์ไซต์ของพวกเขาด้วยวิธีนี้หรือไม่?
Elias7

1
@whatIsperfect เป็นไปได้แน่นอน
แจ็ค

1
@JackNicholsonn เจ้าของไซต์จะรู้ได้อย่างไร ตัวแทนที่ใช้คือ Mozilla ซึ่งหมายความว่าส่วนหัวทั้งหมดจะเข้าสู่เบราว์เซอร์ Mozilla ดังนั้นการตรวจสอบ wget ที่ใช้จะเป็นไปไม่ได้หรือไม่ โปรดแก้ไขถ้าฉันผิด ขอบคุณ
KhoPhi

63
wget -m -p -E -k -K -np http://site/path/

หน้าคนจะบอกคุณว่าตัวเลือกเหล่านั้นทำ

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


ขอบคุณสำหรับการตอบ :) เป็นชุดทั้งเว็บไซต์และฉันต้องการเฉพาะไฟล์ (เช่น txt, PDF, ภาพ ฯลฯ ) ในเว็บไซต์
Aniruddhsinh

25

ฉันพยายามดาวน์โหลดไฟล์ zip ที่ลิงก์จากหน้าธีมของ Omeka ซึ่งเป็นงานที่ค่อนข้างคล้ายกัน สิ่งนี้ใช้ได้กับฉัน:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: ยอมรับไฟล์ zip เท่านั้น
  • -r: รับเงินคืน
  • -l 1: หนึ่งระดับลึก (เช่นไฟล์ที่เชื่อมโยงโดยตรงจากหน้านี้)
  • -nd: อย่าสร้างโครงสร้างไดเรกทอรีเพียงดาวน์โหลดไฟล์ทั้งหมดลงในไดเรกทอรีนี้

ทุกคำตอบด้วย-k, -K, -Eตัวเลือกอื่น ๆ อาจไม่เข้าใจจริงๆคำถามที่เป็นผู้เขียนใหม่สำหรับหน้าเว็บ HTML เพื่อให้โครงสร้างท้องถิ่นเปลี่ยนชื่อ.phpไฟล์และอื่น ๆ ไม่เกี่ยวข้อง

วิธีรับไฟล์ทั้งหมดยกเว้น แท้จริง.html:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com

2
-Aฉันคิดว่าตรงตามตัวพิมพ์ใหญ่ - เล็กดังนั้นคุณต้องทำ-A zip,ZIP
Flimm

7

คุณอาจลอง:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

นอกจากนี้คุณสามารถเพิ่ม:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

เพื่อยอมรับส่วนขยายที่เฉพาะเจาะจงหรือเพื่อปฏิเสธเฉพาะส่วนขยายที่เฉพาะเจาะจง:

-R html,htm,asp,php

หรือเพื่อยกเว้นพื้นที่เฉพาะ:

-X "search*,forum*"

หากไฟล์ถูกละเว้นสำหรับหุ่นยนต์ (เช่นเครื่องมือค้นหา) คุณต้องเพิ่มด้วย: -e robots=off



5
wget -m -A * -pk -e robots=off www.mysite.com/

การดำเนินการนี้จะดาวน์โหลดไฟล์ทุกประเภทในเครื่องและชี้ไปที่ไฟล์ html และจะไม่สนใจไฟล์ robots


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