Làm cách nào để tải xuống tất cả các tệp (nhưng không phải HTML) từ một trang web bằng wget?


162

Làm thế nào để sử dụng wgetvà nhận được tất cả các tập tin từ trang web?

Tôi cần tất cả các tệp ngoại trừ các tệp trang web như HTML, PHP, ASP, v.v.


Ngay cả khi bạn muốn tải xuống php, không thể sử dụng wget. Chúng tôi chỉ có thể nhận được HTML thô bằng cách sử dụng wget. Tôi đoán bạn biết lý do
Venkateshwaran Selvaraj

Lưu ý: Luôn luôn kiểm tra wget --spidertrước và luôn thêm -w 1(hoặc nhiều hơn -w 5) để bạn không làm ngập máy chủ của người khác.
đẳng cấu

1
Làm thế nào tôi có thể tải xuống tất cả các tập tin pdf trong trang này? pualib.com/collection/pua-titles-a.html

Stack Overflow là một trang web dành cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như lạc đề vì nó không liên quan đến lập trình hay phát triển. Xem những chủ đề nào tôi có thể hỏi về đây trong Trung tâm trợ giúp. Có lẽ Super User hoặc Unix & Linux Stack Exchange sẽ là một nơi tốt hơn để hỏi. Ngoài ra, xem tôi gửi câu hỏi về Dev Ops ở đâu?
jww

Câu trả lời:


262

Để lọc các phần mở rộng tệp cụ thể:

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

Hoặc, nếu bạn thích tên tùy chọn dài:

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

Điều này sẽ phản chiếu trang web, nhưng các tệp không có jpghoặc pdfphần mở rộng sẽ tự động bị xóa.


17
Nếu bạn chỉ muốn tải xuống các tệp mà không có toàn bộ kiến ​​trúc thư mục, bạn có thể sử dụng tùy chọn -nd .
diabloneo

4
mỗi lá cờ có ý nghĩa gì?
Jürgen Paul

Tôi nghĩ --acceptlà trường hợp nhạy cảm, vì vậy bạn sẽ phải làm--accept pdf,jpg,PDF,JPG
Flimm

8
không chắc chắn nếu điều này là với một phiên bản mới của wgetnhưng bạn phải chỉ định một --progressloại, ví dụ--progress=dot
Jamis

@Flimm bạn cũng có thể sử dụng --ignore-casecờ để làm cho --accepttrường hợp không nhạy cảm.
Khắc nghiệt

84

Điều này đã tải xuống toàn bộ trang web cho tôi:

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

20
+1 cho -e robots=off! Điều này cuối cùng đã khắc phục vấn đề của tôi! :) Cảm ơn
NHDaly

12
Các --random-waittùy chọn là thiên tài;)
poitroae

2
@izilotti Chủ sở hữu trang web có thể tìm hiểu xem bạn WGET tệp trang web của họ bằng phương pháp này không?
Elias7

1
@whatIsperinf Nó chắc chắn có thể.
Jack

1
@JackNicholsonn Làm thế nào để chủ sở hữu trang web biết? Tác nhân được sử dụng là Mozilla, có nghĩa là tất cả các tiêu đề sẽ xuất hiện dưới dạng trình duyệt Mozilla, do đó việc phát hiện wget như đã sử dụng là không thể? Vui lòng sửa nếu tôi sai. cảm ơn
KhoPhi

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

trang man sẽ cho bạn biết những lựa chọn đó làm gì.

wgetsẽ chỉ theo các liên kết, nếu không có liên kết đến một tệp từ trang chỉ mục, thì wgetsẽ không biết về sự tồn tại của nó và do đó không tải xuống. I E. nó giúp nếu tất cả các tệp được liên kết đến trong các trang web hoặc trong các chỉ mục thư mục.


Cảm ơn đã trả lời :) Nó sao chép toàn bộ trang web và tôi chỉ cần các tệp (ví dụ: txt, pdf, hình ảnh, v.v.) trong trang web
Aniruddhsinh

25

Tôi đã cố tải xuống các tệp zip được liên kết từ trang chủ đề của Omeka - nhiệm vụ khá giống nhau. Điều này làm việc cho tôi:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: chỉ chấp nhận tệp zip
  • -r: tái diễn
  • -l 1: sâu một cấp (nghĩa là chỉ các tệp được liên kết trực tiếp từ trang này)
  • -nd: không tạo cấu trúc thư mục, chỉ cần tải xuống tất cả các tệp vào thư mục này.

Tất cả các câu trả lời với -k, -K, -Evv tùy chọn có lẽ đã không thực sự hiểu câu hỏi, như những người như đối với việc viết lại các trang HTML để tạo ra một cấu trúc địa phương, đổi tên .phptập tin và vân vân. Không liên quan.

Để có được tất cả các tập tin ngoại trừ .html vv:

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

2
-Alà trường hợp nhạy cảm, tôi nghĩ vậy, vì vậy bạn sẽ phải làm-A zip,ZIP
Flimm

7

Bạn có thể thử:

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

Ngoài ra, bạn có thể thêm:

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

để chấp nhận các tiện ích mở rộng cụ thể hoặc chỉ từ chối các tiện ích mở rộng cụ thể:

-R html,htm,asp,php

hoặc để loại trừ các khu vực cụ thể:

-X "search*,forum*"

Nếu các tệp bị bỏ qua cho robot (ví dụ: công cụ tìm kiếm), bạn cũng sẽ thêm: -e robots=off


5

Thử cái này. Nó luôn làm việc cho tôi

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

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

điều này sẽ tải xuống tất cả các loại tệp cục bộ và trỏ đến chúng từ tệp html và nó sẽ bỏ qua tệp robot


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.