Làm cho 'wget` không lưu trang


68

Tôi đang sử dụng wgetchương trình, nhưng tôi muốn nó không lưu tệp html tôi đang tải xuống. Tôi muốn nó được loại bỏ sau khi nó được nhận. Làm thế nào để làm điều đó?


Tôi mới sử dụng Linux - Điều /dev/nullnày có hiệu quả không?
Ram Rachum

2
Vì vậy, những điểm để tải về nó sau đó?
Ẩn danh

1
@ Đồng nghĩa Tôi giả sử nhấn mạnh máy chủ từ xa .. Nếu bạn không quan tâm đến nội dung .. Có lẽ tôi sẽ sử dụng apachebench (ab).
Tom O'Connor

Câu trả lời:


83

Bạn có thể chuyển hướng đầu ra của wget đến / dev / null (hoặc NUL trên Windows):

wget http://www.example.com -O /dev/null

Các tập tin sẽ không được ghi vào đĩa, nhưng nó sẽ được tải xuống.


Điều này không lưu trang, nhưng nó gửi email cho tôi. Ngoài ra có thể vô hiệu hóa email?
trante

32

Nếu bạn không muốn lưu tệp và bạn đã chấp nhận giải pháp tải xuống trang /dev/null, tôi cho rằng bạn đang sử dụng wget không để lấy và phân tích nội dung trang .

Nếu nhu cầu thực sự của bạn là kích hoạt một số hành động từ xa, hãy kiểm tra xem trang có tồn tại hay không và tôi nghĩ sẽ tốt hơn nếu tránh tải xuống trang nội dung html.

Chơi với wgetcác tùy chọn để chỉ truy xuất những gì bạn thực sự cần, ví dụ như tiêu đề http, trạng thái yêu cầu, v.v.

  • giả sử bạn cần kiểm tra trang là ok (nghĩa là trạng thái trả về là 200) bạn có thể làm như sau:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • Nếu bạn muốn phân tích cú pháp máy chủ trả về, hãy làm như sau:

    wget --no-cache -S http://your.server.tld/your/page.html
    

Xem trang wget man để biết thêm tùy chọn để chơi.
Xem lynxquá, như là một thay thế cho wget.


Tôi bối rối. --no-cachetrong trang man nói rằng nó khiến wget "gửi cho máy chủ từ xa một chỉ thị thích hợp ('Pragma: no-cache') để lấy tệp từ dịch vụ từ xa"
Gaia

Nó nói với máy chủ rằng khách hàng của bạn không muốn có một phiên bản được lưu trong bộ nhớ cache của tệp .. chúng tôi muốn nhận bản phát hành cuối cùng của tài nguyên mà chúng tôi đang yêu cầu
drAlberT

17

$ wget http://www.somewebsite.com -O foo.html --delete-after


1
Cảm ơn rất nhiều. Các --delete-aftertùy chọn là sự lựa chọn khi bạn phải tải về đệ quy nhưng bạn muốn loại bỏ các nội dung thực tế.
egelev

+1 đối với tôi, lệnh là trực quan - trong nháy mắt, tôi có thể hiểu nhanh hơn những gì sẽ xảy ra hơn-O /dev/null
fusion27

15

Trong trường hợp bạn cũng muốn in trong bảng điều khiển, kết quả bạn có thể làm:

wget -qO- http://www.example.com

1
Tôi thích tùy chọn này nhất. Nó cho tôi xem những gì nó nhận được nhưng không lưu nó. Các công tắc là qchế độ im lặng đặc biệt , (nó không xuất tiến trình và thông tin khác) và O-(ghi tài liệu đã truy xuất vào bàn điều khiển).
Bạch tuộc

9

Một cách khác là sử dụng một công cụ như curl, theo mặc định sẽ xuất nội dung từ xa stdoutthay vì lưu nó vào một tệp.


4

Kiểm tra tùy chọn "-spider". Tôi sử dụng nó để đảm bảo các trang web của tôi hoạt động và gửi email cho tôi nếu không. Đây là một mục tiêu biểu từ crontab của tôi:

46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi

3

Nếu bạn cần thu thập dữ liệu một trang web bằng wget và muốn giảm thiểu việc khuấy đĩa ...

Đối với hộp * NIX và sử dụng wget, tôi khuyên bạn nên bỏ qua ghi vào tệp. Tôi nhận thấy trên hộp Ubuntu 10.04 của mình wget -O /dev/nullđã khiến wget hủy bỏ tải xuống sau lần tải xuống đầu tiên.
Tôi cũng nhận thấy rằng wget -O real-filenguyên nhân khiến wget quên các liên kết thực tế trên trang. Nó nhấn mạnh vào một index.htmlđể có mặt trên mỗi trang. Các trang như vậy có thể không phải lúc nào cũng có mặt và wget sẽ không nhớ các liên kết mà nó đã thấy trước đó.

Để thu thập dữ liệu mà không ghi vào đĩa, điều tốt nhất tôi nghĩ ra là như sau

 mkdir /dev/shm/1   
 cd /dev/shm/1
 wget --recursive --relative --no-parent ...

Thông báo không có -O filetùy chọn. wget sẽ ghi vào thư mục $ PWD. Trong trường hợp này là hệ thống tệp tmpfs chỉ RAM . Viết ở đây nên bỏ qua việc khuấy đĩa (tùy thuộc vào không gian trao đổi) VÀ theo dõi tất cả các liên kết. Điều này sẽ thu thập dữ liệu toàn bộ trang web thành công.

Sau đó, tất nhiên,

 rm --recursive --force /dev/shm/1/*

2

Sử dụng tùy chọn --delete-after, để xóa tệp sau khi được tải xuống.

Chỉnh sửa: Rất tiếc, tôi chỉ nhận thấy rằng đã được trả lời.


0

Theo tài liệu trợ giúp (wget -h), bạn có thể sử dụng tùy chọn --spider để bỏ qua tải xuống (phiên bản 1.14).

Download:
  -S,  --server-response         print server response.
       --spider                  don't download anything.


Làm thế nào để điều này thêm vào câu trả lời khác mà đề cập --spider?
Phường
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.