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