Зробити `wget` не зберегти сторінку


68

Я використовую wgetпрограму, але хочу, щоб вона не зберігала html-файл, який я завантажую. Я хочу, щоб він був відкинутий після його отримання. Як це зробити?


Я новачок у Linux - чи /dev/nullспрацювала б ця річ?
Рам Рахум

2
Тож який сенс завантажити його тоді?
Анонім

1
@Anonymous Я вважаю, що наголошую на віддаленому сервері .. Якщо ви не переймаєтесь вмістом .. Хоча, ймовірно, я би використовував apachebench (ab).
Том О'Коннор

Відповіді:


83

Ви можете перенаправити вихід wget на / dev / null (або NUL в Windows):

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

Файл не буде записаний на диск, але він буде завантажений.


Це не зберігає сторінку, але вона надсилає мені електронний лист. Чи можливо відключити електронне повідомлення?
trante

32

Якщо ви не хочете зберегти файл, і ви прийняли рішення про завантаження сторінки /dev/null, я думаю, ви використовуєте wget, щоб не отримувати та аналізувати вміст сторінки .

Якщо ваша справжня потреба полягає в запуску певної віддаленої дії, перевірте, чи існує сторінка тощо. Я думаю, що було б краще взагалі не уникати завантаження HTML-сторінки.

Грайте з wgetпараметрами, щоб отримати лише те, що вам дійсно потрібно, наприклад заголовки http, статус запиту тощо.

  • якщо припустити, що вам потрібно перевірити, що сторінка в порядку (тобто повернутий стан дорівнює 200), ви можете зробити наступне:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • якщо ви хочете проаналізувати повернені заголовки сервера, виконайте наступне:

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

Перегляньте сторінку чоловіка wget, щоб отримати додаткові варіанти грати.
Дивіться lynxтакож як альтернативу wget.


Я збентежений. --no-cacheна сторінці man говориться, що це призводить до того, що wget "надсилає віддаленому серверу відповідну директиву (" Pragma: no-cache "), щоб отримати файл з віддаленого сервісу"
Gaia

Він каже серверу, що ваш клієнт не хоче кешовану версію файлу. Ми хочемо отримати останній випуск ресурсу, про який ми
просимо

17

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


1
Дуже дякую. Цей --delete-afterваріант - це вибір, коли потрібно завантажувати рекурсивно, але ви хочете відкинути фактичний вміст.
egelev

+1 для мене команда інтуїтивно зрозуміла - на перший погляд я можу швидше зрозуміти, що трапиться, ніж-O /dev/null
fusion27

15

Якщо ви також хочете роздрукувати на консолі результат, ви можете це зробити:

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

1
Мені найбільше подобається цей варіант. Це дозволить мені побачити, що він отримує, але не врятує його. Перемикачі мають специфічно qтихий режим (він не виводить прогрес та іншу інформацію) та O-(записуйте отриманий документ на консоль).
Восьминіг

9

Іншою альтернативою є використання подібного інструменту curl, який за замовчуванням видає віддалений вміст, stdoutа не зберігає його у файл.


4

Ознайомтеся з опцією "-spider". Я використовую це, щоб переконатися, що мої веб-сайти створені, і надіслати мені електронний лист, якщо їх немає. Це типовий запис із мого crontab:

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

3

Якщо вам потрібно сканувати веб-сайт за допомогою wget і хочете звести до мінімуму дисковий збір ...

Для вікна * NIX та використання wgetя пропоную пропустити запис у файл. Я помітив на своєму Ubuntu 10.04 вікно, яке wget -O /dev/nullспричинило, що wget перервав завантаження після першого завантаження.
Я також помітив, що wget -O real-fileзмушує wget забути фактичні посилання на сторінці. Він наполягає на тому, index.htmlщоб бути присутнім на кожній сторінці. Такі сторінки не завжди можуть бути присутніми, і wget не запам’ятає посилання, які він бачив раніше.

Для сканування без запису на диск найкраще я придумав наступне

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

Зауважте, що немає -O fileваріанту. wget запише в каталог $ PWD. У цьому випадку це файлова система tmpfs лише для RAM . Якщо писати тут, слід обійти дисковий звук (залежно від місця обміну) І відстежувати всі посилання. Це має успішно сканувати весь веб-сайт.

Потім, звичайно,

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

2

Використовуйте опцію --delete-after, яка видаляє файл після його завантаження.

Редагувати: На жаль, я щойно помітив, що вже відповів.


0

Відповідно до довідкового документа (wget -h), ви можете скористатися опцією --spider, щоб пропустити завантаження (версія 1.14).

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


Як це додає до іншої відповіді, що згадує --повук?
Уорд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.