Заставить wget не сохранять страницу

68

Я использую wgetпрограмму, но хочу, чтобы она не сохраняла загружаемый файл HTML. Я хочу, чтобы от него отказались после его получения. Как мне это сделать?

Рам Рахум
источник
Я новичок в Linux - Будет ли /dev/nullэто работать?
Рам Рахум
2
Так какой смысл скачивать его тогда?
Аноним
1
@ Аноним Я предполагаю подчеркнуть удаленный сервер .. Если вы не заботитесь о контенте .. Хотя, возможно, я бы использовал apachebench (ab).
Том О'Коннор

Ответы:

83

Вы можете перенаправить вывод wget в / dev / null (или NUL в Windows):

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

Файл не будет записан на диск, но будет загружен.

Эван Андерсон
источник
Это не сохраняет страницу, но отправляет мне письмо. Также есть возможность отключить рассылку?
Трант
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.

drAlberT
источник
Я не совсем понимаю. --no-cacheна странице руководства говорится, что wget «отправляет на удаленный сервер соответствующую директиву (« Pragma: no-cache ») для получения файла от удаленного сервиса»
Gaia
Он говорит серверу, что ваш клиент не хочет кэшированную версию файла .. мы хотим получить самый последний выпуск ресурса, который мы запрашиваем
drAlberT
17

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

и др.
источник
1
Большое спасибо. --delete-afterВариантом является выбор , когда вы должны загрузить рекурсивно , но вы хотите отказаться от фактического содержания.
Эгелев
+1 для меня, команда интуитивно понятна - с -O /dev/null
первого
15

Если вы также хотите распечатать в консоли результат, который вы можете сделать:

wget -qO- http://www.example.com
SCL
источник
1
Мне больше нравится этот вариант. Это позволяет мне увидеть, что он получает, но не сохраняет его. Переключатели работают в qтихом режиме (он не выводит информацию о ходе и другой информации) и O-(записывает полученный документ в консоль).
Осьминог
9

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

natacado
источник
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/nullwget прерывает загрузку после первой загрузки.
Я также заметил, что wget -O real-filewget забывает реальные ссылки на странице. Он настаивает на том, index.htmlчтобы присутствовать на каждой странице. Такие страницы могут не всегда присутствовать, и wget не будет помнить ссылки, которые он видел ранее.

Для сканирования без записи на диск лучше всего подходит следующее

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

Обратите внимание, что нет -O fileварианта. wget запишет в каталог $ PWD. В данном случае это файловая система tmpfs только для оперативной памяти . Запись здесь должна обходить откат диска (в зависимости от пространства подкачки) И отслеживать все ссылки. Это должно успешно сканировать весь сайт.

После, конечно,

 rm --recursive --force /dev/shm/1/*
JamesThomasMoon1979
источник
2

Используйте параметр --delete-after, который удаляет файл после его загрузки.

Редактировать: Ой, я только что заметил, что уже ответил.

Джон Гарденье
источник
0

Согласно справке doc (wget -h), вы можете использовать опцию --spider, чтобы пропустить загрузку (версия 1.14).

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

скалистая ци
источник
Как это добавляет к другому ответу, который упоминает --spider?
Опека