使`wget`不保存页面


68

我正在使用该wget程序,但我希望它不要保存正在下载的html文件。我希望在收到后将其丢弃。我怎么做?


我是Linux的新手-这可以/dev/null工作吗?
Ram Rachum

2
那么,什么时候下载它呢?
匿名

1
@Anonymous我认为是要强调远程服务器的。如果您不关心内容,我可能会使用apachebench(ab)。
汤姆·奥康纳

Answers:


83

您可以将wget的输出重定向到/ dev / null(在Windows上为NUL):

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手册页中的内容说这会导致wget“向远程服务器发送适当的指令('Pragma:no-cache')以从远程服务获取文件”
Gaia 2013年

它对服务器说,您的客户端不需要该文件的缓存版本..我们希望获得我们所请求的资源的最新版本
drAlberT 2013年

17

$ wget http://www.somewebsite.com -O foo.html --delete-after


1
非常感谢。--delete-after当您必须递归下载但想要放弃实际内容时,可以选择该选项。
egelev 2015年

对我+1来说,命令很直观-一目了然,我能比-O /dev/null
Fusion27

15

如果您还想在控制台中打印结果,可以执行以下操作:

wget -qO- http://www.example.com

1
我最喜欢这个选项。它让我看看它得到了什么但没有保存。这些开关特别是q安静模式,(它不输出进度和其他信息),以及O-(将检索到的文档写到控制台)。
Octopus

9

另一种选择是使用类似的工具curl,默认情况下,该工具stdout会将远程内容输出到,而不是将其保存到文件中。


4

签出“蜘蛛”选项。我使用它来确保我的网站正常运行,如果没有,请给我发送电子邮件。这是我的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目录。在这种情况下,这是仅RAM的tmpfs文件系统。在这里写应该绕过磁盘搅动(取决于交换空间)并跟踪所有链接。这样可以成功爬网整个网站。

然后,当然

 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.


这如何添加到提到--spider的其他答案中?
沃德
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.