用wget递归下载
Linux命令行下常用的http下载工具有wget和curl。
1. 这里用wget递归下载某目录下所有除html外的文件~
wget -r -np --reject=html www.download.example
其中:
-r, 表示递归下载当前页面所有(子)链接
-np,表示不去遍历父目录下内容
--reject=html,不接受扩展名为html的文件
或者可以把reject换做 --accept=iso,c,h,表示只接受以此结尾的文件,分隔符为逗号(comma-separated)
2. 用curl来查看http过程
curl -v here.is.your.url
我用该选项查看取服务器上主页的过程,主要是这里包括了http header:
复制代码
zxluo@polaris:~$ curl -v 192.168.1.1
* About to connect() to 192.168.1.1 port 80 (#0)
* Trying 192.168.1.1... connected
* Connected to 192.168.1.1 (192.168.1.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: 192.168.1.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 26 Feb 2013 07:52:54 GMT
< Server: Apache/2.2.16 (Debian)
< Last-Modified: Wed, 18 Apr 2012 12:18:11 GMT
< ETag: "a002-b1-4bdf30c7c06c0"
< Accept-Ranges: bytes
< Content-Length: 177
< Vary: Accept-Encoding
< Content-Type: text/html <
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
* Connection #0 to host 192.168.1.1 left intact
* Closing connection #0
复制代码
另外,curl -i here.is.your.url只显示response的头信息。
3. 表单提交
发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。
curl example.com/form.cgi?data=xxx
POST方法必须把数据和网址分开,curl就要用到--data参数。
curl --data "data=xxx" example.com/form.cgi
如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode。
curl --data-urlencode "date=April 1" example.com/form.cgi
可以用curl这样上传文件:
curl --form upload=@localfilename --form press=OK [URL]
4. HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
curl --user name:password example.com
wget下载整个网站或目录
一 21st, 2009
shell
no comments
用wget下载东西,的确很方便,它会自动重连并断点续传。让人很放心。
经常要下载一个网站或网站的某个目录。
将wget命令放到这里备用:
下载一个目录,例如网站的yourdir
wget -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)" -r -p -k -np -Pmydir -nc -o down.log http://www.yourdomain.com/yourdir/index.html
如果要想下载整个网站,最好去除-np参数。
wget -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)" -r -p -k -nc -o down.log http://www.yourdomain.com/index.html
-U 修改agent,伪装成IE货firefox等
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递 归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。
-nc 不下载已经存在的文件
-np 表示不跟随链接,只下载指定目录及子目录里的东西;
-p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下载。
-k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。