Ram Rachum Asked: 2009-10-10 18:05:41 +0800 CST2009-10-10 18:05:41 +0800 CST 2009-10-10 18:05:41 +0800 CST 使`wget`不保存页面 772 我正在使用该wget程序,但我不希望它保存我正在下载的 html 文件。我希望它在收到后被丢弃。我怎么做? wget 9 个回答 Voted Best Answer Evan Anderson 2009-10-10T19:01:30+08:002009-10-10T19:01:30+08:00 您可以将 wget 的输出重定向到 /dev/null(或 Windows 上的 NUL): wget http://www.example.com -O /dev/null 该文件不会写入磁盘,但会被下载。 drAlberT 2009-10-10T22:38:07+08:002009-10-10T22:38:07+08:00 如果您不想保存文件,并且您已经接受了在 中下载页面的解决方案/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 的替代品。 SCL 2011-04-01T10:24:05+08:002011-04-01T10:24:05+08:00 如果您还想在控制台中打印结果,您可以执行以下操作: wget -qO- http://www.example.com al. 2009-10-10T18:16:56+08:002009-10-10T18:16:56+08:00 $ wget http://www.somewebsite.com -O foo.html --delete-after natacado 2009-10-10T19:49:42+08:002009-10-10T19:49:42+08:00 另一种选择是使用类似的工具curl,默认情况下将远程内容输出到stdout而不是将其保存到文件中。 Paul Tomblin 2009-10-10T18:46:46+08:002009-10-10T18:46:46+08:00 查看“-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 JamesThomasMoon 2012-04-06T13:05:12+08:002012-04-06T13:05:12+08:00 如果您需要使用 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 目录。在这种情况下,这是一个仅 RAM 的tmpfs文件系统。在这里写应该绕过磁盘搅动(取决于交换空间)并跟踪所有链接。这应该会成功爬取整个网站。 之后,当然, rm --recursive --force /dev/shm/1/* John Gardeniers 2009-10-10T19:16:48+08:002009-10-10T19:16:48+08:00 使用 --delete-after 选项,它会在文件下载后删除文件。 编辑:哎呀,我刚刚注意到已经回答了。 rocky qi 2019-05-09T20:33:17+08:002019-05-09T20:33:17+08:00 根据帮助文档(wget -h),您可以使用 --spider 选项跳过下载(版本 1.14)。 Download: -S, --server-response print server response. --spider don't download anything.
您可以将 wget 的输出重定向到 /dev/null(或 Windows 上的 NUL):
该文件不会写入磁盘,但会被下载。
如果您不想保存文件,并且您已经接受了在 中下载页面的解决方案
/dev/null
,我想您使用 wget 不是获取和解析页面内容。如果您真正需要触发一些远程操作,请检查页面是否存在等等我认为最好完全避免下载 html 正文页面。
使用
wget
选项以仅检索您真正需要的内容,即 http 标头、请求状态等。假设您需要检查页面是否正常(即返回的状态为 200),您可以执行以下操作:
如果要解析服务器返回的标头,请执行以下操作:
请参阅wget 手册页以获取更多选项。
另见
lynx
,作为 wget 的替代品。如果您还想在控制台中打印结果,您可以执行以下操作:
$ wget http://www.somewebsite.com -O foo.html --delete-after
另一种选择是使用类似的工具
curl
,默认情况下将远程内容输出到stdout
而不是将其保存到文件中。查看“-spider”选项。我用它来确保我的网站正常运行,如果没有,就给我发一封电子邮件。这是我的 crontab 中的典型条目:
如果您需要使用 wget 抓取网站并希望最大限度地减少磁盘流失...
对于 *NIX 框和使用
wget
,我建议跳过写入文件。我注意到在我的 Ubuntu 10.04 机器上wget -O /dev/null
导致 wget 在第一次下载后中止下载。我还注意到这
wget -O real-file
会导致 wget 忘记页面上的实际链接。它坚持index.html
要出现在每一页上。这样的页面可能并不总是存在,并且 wget 不会记住它以前看到的链接。对于不写入磁盘的爬网,我想出的最好的方法如下
注意没有
-O file
选项。wget 将写入 $PWD 目录。在这种情况下,这是一个仅 RAM 的tmpfs文件系统。在这里写应该绕过磁盘搅动(取决于交换空间)并跟踪所有链接。这应该会成功爬取整个网站。之后,当然,
使用 --delete-after 选项,它会在文件下载后删除文件。
编辑:哎呀,我刚刚注意到已经回答了。
根据帮助文档(wget -h),您可以使用 --spider 选项跳过下载(版本 1.14)。