Заставить 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.


Я не совсем понимаю. --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

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/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/*

2

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

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


0

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

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


Как это добавляет к другому ответу, который упоминает --spider?
— Опека
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.