Wget输出文档和标头到STDOUT


116

我正在尝试通过wget将文档正文及其标题输出到stdout 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
克里斯Rymer说

以及wget -qS <url>仅用于HTTP 标头curl -IL

Answers:


166

尝试以下操作,没有多余的标题

wget -qO- www.google.com

注意尾随-。这是常规命令参数的一部分,用于-O引出文件,但由于我们不习惯于>直接引向文件,因此它将引出至外壳。您可以使用-qO--qO -


2
O之后是什么?
codecowboy

1
@codecowboy我修饰了答案以解释多余的破折号。
Joseph Lust 2014年

3
-S我的alpinelinux容器不支持该选项。我忽略了它,一切都很好
Christian Bongiorno

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我的alpinelinux容器不支持该选项。我忽略了它,一切都很好
Christian Bongiorno

@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.



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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.