wget tải xuống đệ quy, nhưng tôi không muốn theo tất cả các liên kết


10

Tôi đang cố gắng phản chiếu một trang web bằng wget, nhưng tôi không muốn tải xuống nhiều tệp, vì vậy tôi đang sử dụng --rejecttùy chọn của wget để không lưu tất cả các tệp. Tuy nhiên, wget vẫn sẽ tải xuống tất cả các tệp và sau đó xóa tệp sau đó nếu nó phù hợp với tùy chọn từ chối của tôi.

Có một số cách để nói với wget không theo các liên kết nhất định nếu chúng phù hợp với một số ký tự đại diện shell? Nếu wget không thể làm điều này, có một số lệnh linux phổ biến khác có thể làm điều này không?


3
Gửi toàn bộ lệnh của bạn xin vui lòng. Nó làm cho nó dễ dàng hơn để khắc phục sự cố.
Joseph Kern

Câu trả lời:


9

Bạn cũng có thể thử HTTrack , có IMO, bao gồm / loại trừ logic linh hoạt và trực quan hơn. Một cái gì đó như thế này ...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Các quy tắc sẽ được áp dụng theo thứ tự và sẽ ghi đè các quy tắc trước đó ...

  1. Không bao gồm mọi thứ
  2. Nhưng bao gồm https://example.com/images/ *
  3. Nhưng loại trừ bất cứ điều gì kết thúc trong swf

Nó sẽ tải CSS, hình ảnh, vv với các URL được cập nhật?
brandizzi


1

Trong phần --reject của 'man wget':

"Lưu ý rằng nếu bất kỳ ký tự đại diện nào, *,?, [Hoặc], xuất hiện trong một yếu tố của danh sách hoặc danh sách lại, thì nó sẽ được coi là một mẫu, thay vì hậu tố."

Nếu bạn đang làm điều này, bạn có thể muốn đưa ra các ví dụ về các mẫu bạn đang sử dụng và những gì bạn nghĩ là phù hợp, và điều đó không phù hợp. Bạn nói rằng họ phù hợp, nhưng bạn có chắc chắn?

Ngoài ra, hãy đảm bảo bạn đặt danh sách này trong dấu ngoặc kép, vì vậy shell không mở rộng các ký tự đại diện đó trước khi chuyển (các) đối số sang wget.

Ngay cả khi hệ thống của bạn không có phiên bản 1.12, hãy đọc phần Loại tệp trong hướng dẫn sử dụng tại đây . Theo nhật ký thay đổi, người bảo trì đã thêm một số cảnh báo:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.

Các tùy chọn --reject nằm trong dấu ngoặc kép. Tôi có thể thấy rằng phù hợp với các tệp chính xác bởi vì sau khi tệp được tải xuống, wget sẽ xóa tệp. Tôi chỉ muốn ngăn chặn nó tải xuống tệp ở nơi đầu tiên
Rory

Là những tập tin htm (l)? Theo hướng dẫn, những thứ này được tải xuống không có vấn đề gì.
Kyle Brandt

Đúng. các tệp tôi muốn từ chối là các tệp HTML. Tôi biết chúng được tải xuống không có vấn đề gì. Có cách nào để ngăn chặn điều đó?
Rory

1

Bạn có thể hạn chế mức đệ quy với -l NUMBERtùy chọn, nếu điều đó có ích (không tuân theo một mẫu biểu thức chính quy nhất định).

Mức "2" tải xuống index.html, trang con / hình ảnh / vv của nó và các liên kết trên trang con.


không, điều đó sẽ không giúp ích gì trong trường hợp này
Rory

1

Làm thế nào để bạn sử dụng wget? cố gắng sử dụng nó theo cách này:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

lệnh này sẽ bỏ qua các tập tin gif và jpg và swf.


Các tệp mà Rory McCann muốn từ chối là các tệp HTML, nhưng anh ta muốn giữ các tệp HTML khác, vì vậy cú pháp này không áp dụng cho câu hỏi của anh ta.
Royce Williams

1

Một cách giải quyết khác là chạy wget thông qua máy chủ proxy. Đặt proxy của bạn để không cho phép một số mẫu nhất định. Điều này sẽ chặn wget từ bao giờ tải xuống chúng ở nơi đầu tiên.

wget sẽ tải xuống và xóa một tệp phù hợp với mẫu -R. nó cũng có thể khớp với các mẫu, không chỉ các phần mở rộng hoặc các phần của tên tệp. Tuy nhiên, nó không dừng việc tải xuống trước và xóa sau.

omerack có một số tính năng hay nhưng theo kinh nghiệm của tôi, cách lưu "tập tin" có thể hơi kỳ quặc, ví dụ như nếu Olerack đi qua index.asp? Type = BASIC & PAGEID = 2234234
nó có thể lưu nó nhưng bạn phải bảo nó bảo toàn các phần của truy vấn,
ví dụ:% h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
là @ giữ chỗ cho một dấu hỏi, bạn có thể đổi tên các tệp sau, hoặc có thể thoát khỏi một dấu hỏi thay thế? vấn đề là,.% t sẽ thêm '.html' vào cuối URI của bạn mà ban đầu không có '.html' Và nếu bạn gỡ bỏ nó, hình ảnh mà tải xuống omerack sẽ thiếu phần mở rộng tệp.

Tốt hơn hết là sử dụng wget IMHO

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.