Wget выходной документ и заголовки в STDOUT


116

Я пытаюсь вывести тело документа и его заголовки на стандартный вывод с помощью wget по wget -S -O - http://google.com

но он показывает только html-документ.

Спасибо

UPD:

Сработал это wget --save-headers --output-document - http://google.com

wget --version показывает GNU Wget 1.11.4 Red Hat модифицированный


Я просто попробовал, это отлично сработало, но на --save-headersсамом деле это было-save-headers
Крис Раймер

и wget -qS <url>только для заголовков http (eq. to )curl -IL

Ответы:


168

Попробуйте следующее, без лишних заголовков

wget -qO- www.google.com

Обратите внимание на конечный -. Это часть обычного аргумента команды для -Oперехода к файлу, но, поскольку мы не используем его >для перехода к файлу, он переходит в оболочку. Вы можете использовать -qO-или -qO -.


2
что за лишнее - после О?
codecowboy

1
@codecowboy Я приукрасил ответ, чтобы объяснить лишнюю черту.
Джозеф Ласт

3
эта -Sопция не поддерживалась в моем alpineконтейнере Linux. Я пропустил это, и все было хорошо
Кристиан Бонджорно

1
Согласно справочной странице GNU «Если - используется как файл, документы будут распечатываться в стандартный вывод, отключая преобразование ссылок». Это более четко написано с предшествующим пробелом.
Джош Хабдас

4
Этот ответ не имеет смысла. OP попросил показать заголовки, а не скрывать их
aexl

45

wget -S -O - http://google.comработает для меня так, как ожидалось, но с оговоркой: заголовки считаются отладочной информацией и поэтому отправляются в стандартную ошибку а не в стандартный вывод. Если вы перенаправляете стандартный вывод в файл или другой процесс, вы получите только содержимое документа.

В качестве возможного решения вы можете попробовать перенаправить стандартную ошибку на стандартный вывод. Например, в bash:

$ wget -q -S -O - 2>&1 | grep ...

или

$ wget -q -S -O - 1>wget.txt 2>&1

Эта -qопция подавляет индикатор выполнения и некоторые другие раздражающие части wgetвывода.


1
эта -Sопция не поддерживалась в моем alpineконтейнере Linux. Я пропустил это, и все было хорошо
Кристиан Бонджорно

@ChristianBongiorno Вы можете установить правильный wget с помощью apk add wget, в противном случае будет использоваться только версия busybox.
AndreKR

22

Здесь работает:

    $ wget -S -O - http://google.com
HTTP request sent, awaiting response... 
  HTTP/1.1 301 Moved Permanently
  Location: http://www.google.com/
  Content-Type: text/html; charset=UTF-8
  Date: Sat, 25 Aug 2012 10:15:38 GMT
  Expires: Mon, 24 Sep 2012 10:15:38 GMT
  Cache-Control: public, max-age=2592000
  Server: gws
  Content-Length: 219
  X-XSS-Protection: 1; mode=block
  X-Frame-Options: SAMEORIGIN
Location: http://www.google.com/ [following]
--2012-08-25 12:20:29--  http://www.google.com/
Resolving www.google.com (www.google.com)... 173.194.69.99, 173.194.69.104, 173.194.69.106, ...

  ...skipped a few more redirections ...

    [<=>                                                                                                                                     ] 0           --.-K/s              
<!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop="image" content="/images/google_favicon_128.png"><ti 

... skipped ...

возможно вам нужно обновить ваш wget ( ~$ wget --version GNU Wget 1.14 built on linux-gnu.)


7

Это сработало для меня для печати ответа с заголовком:

wget --server-response http://www.example.com/

1
Возможно, вы захотите добавить --spiderаргумент. Эта полезная причина не загружает содержимое страницы.
Антонио

3

Это не будет работать:

wget -q -S -O - google.com 1>wget.txt 2>&1

поскольку перенаправления оцениваются справа налево, он отправляет html в wget.txt, а заголовок в STDOUT:

wget -q -S -O - google.com 2>&1 1>wget.txt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.