Зробити `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.