Làm cách nào để tải xuống thư mục HTTP với tất cả các tệp và thư mục con khi chúng xuất hiện trên danh sách tệp / thư mục trực tuyến?


187

Có một thư mục HTTP trực tuyến mà tôi có quyền truy cập. Tôi đã cố tải xuống tất cả các thư mục con và tập tin qua wget. Nhưng, vấn đề là khi wgettải xuống các thư mục con, nó tải xuống index.htmltệp chứa danh sách các tệp trong thư mục đó mà không tải xuống các tệp.

Có cách nào để tải xuống các thư mục con và tệp mà không giới hạn độ sâu (như thể thư mục tôi muốn tải xuống chỉ là một thư mục mà tôi muốn sao chép vào máy tính của mình).

thư mục HTTP trực tuyến

Câu trả lời:


352

Giải pháp:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Giải trình:

  • Nó sẽ tải về tất cả các file và thư mục con trong ddd thư mục
  • -r : đệ quy
  • -np: không vào thư mục trên, như ccc / '
  • -nH : không lưu tập tin vào thư mục tên máy chủ
  • --cut-dirs=3: nhưng lưu nó vào ddd bằng cách bỏ qua 3 thư mục đầu tiên aaa , bbb , ccc
  • -R index.html: Không bao gồm index.html file

Tham khảo: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-doad-all-files-from-certain-directory-listed-by-apache/


17
Cảm ơn bạn! Ngoài ra, FYI theo này bạn có thể sử dụng -Rnhư -R cssđể loại trừ tất cả các file CSS, hoặc sử dụng -Anhư -A pdfđể chỉ tải các tập tin PDF.
Giăng

7
Cảm ơn! Lời khuyên bổ sung được lấy từ trang wget man When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
jgrump2012

3
Tôi nhận được lỗi này 'wget' không được nhận dạng như một lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó.
ham

1
@hamish bạn có thể cần cài đặt wget trước hoặc wget không có trong $ PATH của bạn.
Mingjiang Shi

16
Câu trả lời tuyệt vời, nhưng lưu ý rằng nếu có một robots.txttệp không cho phép tải xuống các tệp trong thư mục, điều này sẽ không hoạt động. Trong trường hợp đó bạn cần thêm -e robots=off . Xem unix.stackexchange.com/a/252564/10312
Daniel Hershcovich

45

Tôi đã có thể làm cho nó hoạt động nhờ vào bài đăng này sử dụng VisualWGet . Nó làm việc rất lớn đối với tôi. Phần quan trọng dường như là để kiểm tra -recursivecờ (xem hình ảnh).

Cũng thấy rằng -no-parentcờ là quan trọng, vì vậy nó sẽ cố gắng tải xuống mọi thứ.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


2
Chỉ cần tìm thấy điều này - Tháng 12 năm 2017. Nó hoạt động tốt. Tôi đã nhận được nó tại sourceforge.net/projects/visualwget
SDsolar

2
Hoạt động tốt trên máy Windows, đừng quên kiểm tra các tùy chọn được đề cập trong câu trả lời, nếu không nó sẽ không hoạt động
csharpcoder

Không hoạt động với https nhất định. @DaveLucre nếu bạn đã thử với wget trong giải pháp cmd, bạn cũng có thể tải xuống, nhưng một số sever không cho phép tôi đoán
Yannis Dran

kiểm tra --no-parentlàm gì?
T.Todua

1
Làm việc vào tháng 3 năm 2020!
Lập trình viên Mr

7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Từ man wget

'-r' '--recursive' Bật truy xuất đệ quy. Xem Tải về đệ quy, để biết thêm chi tiết. Độ sâu tối đa mặc định là 5.

'-np' '--no-Parent' Đừng bao giờ lên thư mục cha khi truy xuất đệ quy. Đây là một tùy chọn hữu ích, vì nó đảm bảo rằng chỉ các tệp bên dưới một hệ thống phân cấp nhất định sẽ được tải xuống. Xem Giới hạn dựa trên thư mục, để biết thêm chi tiết.

'-nH' '--no-host-thư mục' Vô hiệu hóa việc tạo các thư mục có tiền tố máy chủ. Theo mặc định, việc gọi Wget bằng '-r http://fly.srk.fer.hr/ ' sẽ tạo ra cấu trúc của các thư mục bắt đầu bằng fly.srk.fer.hr/. Tùy chọn này vô hiệu hóa hành vi như vậy.

'--cut-dirs = number' Bỏ qua các thành phần thư mục số. Điều này rất hữu ích để có được quyền kiểm soát chi tiết đối với thư mục nơi truy xuất đệ quy sẽ được lưu.

Lấy ví dụ: thư mục tại ' ftp://ftp.xemacs.org/pub/xemacs/ '. Nếu bạn truy xuất nó với '-r', nó sẽ được lưu cục bộ trong ftp.xemacs.org/pub/xemacs/. Mặc dù tùy chọn '-nH' có thể xóa phần ftp.xemacs.org/, bạn vẫn bị mắc kẹt với pub / xemacs. Đây là nơi '--cut-dirs' có ích; nó làm cho Wget không thấy các thành phần thư mục từ xa. Dưới đây là một số ví dụ về cách hoạt động của tùy chọn '--cut-dirs'.

Không có tùy chọn -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Nếu bạn chỉ muốn thoát khỏi cấu trúc thư mục, tùy chọn này tương tự như sự kết hợp của '-nd' và '-P'. Tuy nhiên, không giống như '-nd', '--cut-dirs' không bị mất với các thư mục con, ví dụ, với '-nH --cut-dirs = 1', một thư mục con / beta sẽ được đặt vào xemacs / beta, như người ta mong đợi


3
Một số giải thích sẽ là tuyệt vời.
Benoît Latinier

Còn việc tải xuống một loại tệp cụ thể bằng VisualWget thì sao? Có thể tải xuống chỉ các tệp mp3 trong một thư mục và các thư mục con của nó trong VisualWget không?
Jason

3

wgetlà một nguồn tài nguyên vô giá và một cái gì đó tôi sử dụng bản thân mình. Tuy nhiên, đôi khi có các ký tự trong địa chỉ wgetxác định là lỗi cú pháp. Tôi chắc chắn có một cách khắc phục cho điều đó, nhưng vì câu hỏi này không hỏi cụ thể về wgettôi nghĩ tôi sẽ đưa ra một giải pháp thay thế cho những người chắc chắn sẽ vấp ngã trên trang này để tìm cách khắc phục nhanh mà không cần phải học.

Có một số tiện ích mở rộng trình duyệt có thể thực hiện việc này, nhưng hầu hết yêu cầu cài đặt trình quản lý tải xuống, không phải lúc nào cũng miễn phí, có xu hướng gây chướng mắt và sử dụng nhiều tài nguyên. Đây là một trong những không có nhược điểm sau:

"Download Master" là một tiện ích mở rộng cho Google Chrome hoạt động tuyệt vời để tải xuống từ các thư mục. Bạn có thể chọn lọc loại tệp để tải xuống hoặc tải xuống toàn bộ thư mục.

https://chrom.google.com.vn/webstore/detail/doad-master/dljdacfojgikogldjffnkdcielnklkce

Để biết danh sách tính năng cập nhật và thông tin khác, hãy truy cập trang dự án trên blog của nhà phát triển:

http://monadoadmaster.blogspot.com/



2

Không cần phần mềm hoặc Plugin!

(chỉ có thể sử dụng nếu bạn không cần deptch đệ quy)

Sử dụng bookmarklet. Kéo liên kết này trong dấu trang, sau đó chỉnh sửa và dán mã này:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();

và truy cập trang (từ nơi bạn muốn tải xuống tệp) và nhấp vào bookmarklet đó.


1

bạn có thể sử dụng lftp, con dao quân đội swish tải xuống nếu bạn có tệp lớn hơn bạn có thể thêm --use-pget-n=10vào lệnh

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'

hoạt động hoàn hảo và thực sự nhanh chóng, điều này đã tối đa hóa dòng internet của tôi tải xuống hàng ngàn tệp nhỏ. Rất tốt.
n13

-1

wget thường hoạt động theo cách này, nhưng một số trang web có thể có vấn đề và nó có thể tạo ra quá nhiều tệp html không cần thiết. Để làm cho công việc này dễ dàng hơn và để ngăn chặn việc tạo tệp không cần thiết, tôi đang chia sẻ tập lệnh getwebfolder của mình, đây là tập lệnh linux đầu tiên tôi tự viết. Kịch bản này tải xuống tất cả nội dung của một thư mục web được nhập dưới dạng tham số.

Khi bạn cố tải xuống một thư mục web mở bằng wget chứa nhiều hơn một tệp, wget tải xuống một tệp có tên index.html. Tập tin này chứa một danh sách tập tin của thư mục web. Tập lệnh của tôi chuyển đổi tên tệp được ghi trong tệp index.html thành địa chỉ web và tải xuống rõ ràng bằng wget.

Được thử nghiệm tại Ubuntu 18.04 và Kali Linux, Nó cũng có thể hoạt động ở các bản phát hành khác.

Sử dụng :

  • giải nén tập tin getwebfolder từ tập tin zip được cung cấp dưới đây

  • chmod +x getwebfolder (chỉ lần đầu tiên)

  • ./getwebfolder webfolder_URL

nhu la ./getwebfolder http://example.com/example_folder/

Liên kết tải xuống

Chi tiết trên blog

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.