2011-01-05 38 views
111

Tôi đang sử dụng wget để tải xuống tất cả hình ảnh từ một trang web và nó hoạt động tốt nhưng nó lưu trữ phân cấp gốc của trang web với tất cả các thư mục con và do đó hình ảnh được rải rác xung quanh. Có cách nào để nó sẽ chỉ tải tất cả các hình ảnh vào một thư mục duy nhất? Cú pháp Tôi đang sử dụng tại thời điểm này là:Làm cách nào để sử dụng Wget để tải xuống tất cả hình ảnh vào một thư mục, từ URL?

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

Trả lời

156

Hãy thử điều này:

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

Dưới đây là một số thông tin hơn:

-nd ngăn chặn việc tạo ra một hệ thống phân cấp thư mục (ví dụ no directories) .

-r phép đệ quy hồi. Xem Recursive Download để biết thêm thông tin.

-P đặt tiền tố thư mục nơi mà tất cả các file và thư mục được lưu vào.

-A lập một danh sách trắng để lấy các loại tập tin nhất định. Các chuỗi và mẫu được chấp nhận và cả hai mẫu có thể được sử dụng trong danh sách được phân tách bằng dấu phẩy (như đã xem ở trên). Xem Types of Files để biết thêm thông tin.

+4

Điều này thực sự không hiệu quả đối với tôi. Vị trí lưu của tôi là "." và nó đã sao chép toàn bộ hệ thống phân cấp trang web ở đó. –

+2

@ButtleButkus Nghe có vẻ như bạn cần lộn xộn hơn một chút với tùy chọn chấp nhận '-A', xem tài liệu Wget về [loại tệp] (http://www.gnu.org/software/wget/manual/wget .html # Loại-of-Files). Ngoài ra, nếu bạn đang tải xuống thư mục hiện tại, bạn có thể xóa tùy chọn tiền tố thư mục '-P'. Nếu bạn đang tải xuống một loại tệp duy nhất, chẳng hạn như chỉ jpg, hãy sử dụng một cái gì đó như 'wget -r -A.jpg http: // www.domain.com'. Xem [ví dụ nâng cao] (http://www.gnu.org/software/wget/manual/wget.html#Advanced-Usage) mà tài liệu Wget cung cấp. – Jon

+0

Thêm '-nd' vào phần trên làm cho nó hoạt động. Bạn cũng có thể chỉ định nhiều cờ -A chẳng hạn như '-A" * foo * "-A" * thanh * "' – Yablargo

9

Hãy thử điều này một:

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

và chờ cho đến khi nó xóa tất cả các thông tin thêm

+0

Nó không hoạt động đối với tôi.'wget -nd -r -P/Người dùng/duraiamuthan/Tải xuống/hình ảnh/-A jpeg, jpg, bmp, gif, png http://www.forbes.com/profile/mark- zuckerberg/' – Vivo

118
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co 
  • -nd: không có thư mục (lưu tất cả các file vào thư mục hiện hành; -P directory thay đổi thư mục đích)
  • -r -l 2: đệ quy cấp 2
  • -A: phần mở rộng chấp nhận
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2} 
  • -H: host span (wget không tải tệp từ các miền khác nhau hoặc tên miền phụ theo mặc định)
  • -p: điều kiện tiên quyết trang (bao gồm tài nguyên như hình ảnh trên mỗi trang)
  • -e robots=off: thực thi lệnh robotos=off như thể nó là một phần của tệp .wgetrc. Điều này tắt việc loại trừ robot có nghĩa là bạn bỏ qua robots.txt và các thẻ meta robot (bạn nên biết các tác động này đi kèm với, chăm sóc).

Ví dụ: Nhận tất cả .jpg tập tin từ một danh sách thư mục gương mẫu:

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

+1 cho lời giải thích – Shoan

+0

' -H -p' nơi tôi giám sát, thx! – tuk0z

5

Theo man page cờ -P là:

-P tiền tố --directory-prefix = prefix Đặt tiền tố thư mục thành tiền tố. Tiền tố thư mục là thư mục nơi tất cả các tệp và thư mục phụ khác sẽ được lưu vào, tức là phần trên cùng của cây truy xuất. Mặc định là. ( thư mục hiện tại).

Điều này có nghĩa là nó chỉ xác định điểm đến nhưng nơi lưu cây thư mục. Nó không làm phẳng cây chỉ thành một thư mục. Như đã đề cập trước khi lá cờ -nd thực sự làm điều đó.

@Jon trong tương lai sẽ có ích khi mô tả cờ của bạn làm gì để chúng tôi hiểu cách hoạt động của một thứ gì đó.

13

Tôi đã viết một shellscript rằng giải quyết vấn đề này cho nhiều trang web: https://github.com/eduardschaeli/wget-image-scraper

(hình ảnh trầy xước từ một danh sách các url với wget)

+0

hoạt động như một sự quyến rũ, cảm ơn vì nỗ lực của bạn – zergussino

+1

bị hỏng: (....... – clankill3r

+0

Đã làm việc tuyệt vời. Cảm ơn –

-7

tiện ích wget lấy file từ World Wide Web (WWW) bằng cách sử dụng ứng dụng rộng rãi các giao thức như HTTP, HTTPS và FTP. Tiện ích Wget là gói và giấy phép có sẵn miễn phí theo Giấy phép GNU GPL. Tiện ích này có thể cài đặt bất kỳ hệ điều hành giống Unix nào như Windows và MAC OS. Đó là một công cụ dòng lệnh không tương tác. Tính năng chính của Wget chính là sự mạnh mẽ. Nó được thiết kế theo cách sao cho nó hoạt động trong các kết nối mạng chậm hoặc không ổn định. Wget sẽ tự động bắt đầu tải xuống khi nó bị tắt trong trường hợp có vấn đề về mạng. Cũng tải xuống tệp đệ quy. Nó sẽ tiếp tục cố gắng cho đến khi tệp được truy xuất hoàn toàn.

Cài đặt wget trong máy linux sudo apt-get install wget

Tạo một thư mục mà bạn muốn tải về tập tin. sudo mkdir myimages cd myimages

Bấm chuột phải vào trang web và ví dụ nếu bạn muốn vị trí hình ảnh nhấp chuột phải vào hình ảnh và sao chép vị trí hình ảnh. Nếu có nhiều hình ảnh sau đó làm theo dưới đây:

Nếu có 20 hình ảnh để tải về từ trang web cùng một lúc, phạm vi bắt đầu từ 0 đến 19.

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

+2

Câu trả lời của bạn giải thích wget là gì và cách sử dụng nó để tải xuống hình ảnh được đánh số liên tục ... liên quan đến câu hỏi ban đầu. – Alastair

2

Các giải pháp được đề xuất là hoàn hảo để tải xuống hình ảnh và nếu đủ để bạn lưu tất cả các tệp trong thư mục bạn đang sử dụng. Nhưng nếu bạn muốn lưu tất cả các hình ảnh trong một thư mục được chỉ định mà không cần sao chép toàn bộ cây phân cấp của trang web, hãy thử thêm "cắt-dir" vào dòng do Jon đề xuất.

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

trong trường hợp này cut-dirs sẽ cản trở để wget để tạo thư mục con cho đến khi mức độ thứ 3 của nợ trong cây phân cấp website, tiết kiệm tất cả các file trong thư mục bạn specified.You có thể thêm 'cắt -dirs 'với số cao hơn nếu bạn đang xử lý các trang web có cấu trúc sâu.

Các vấn đề liên quan