为了研究HTTP协议,只有硬啃wget 的英文了
Wget 中文使用手则
名称:
wget是一个非交互行的下载器
语法:
wget[option]... url...
描述:
GNUwget 是一个免费的非交互的web服务器下载工具。Wget支持 HTTP、HTTPS、FTP并且支持HTTP代理
wget是非交互的,意味着在用户不登录的情况下它能工作在后台。他支持断续,来完成后续的工作。 通过对比,大部分的浏览器需要固定的用户界面,这个当用户传送数据,就是一个非常大的阻力。
wget能链接HTML、XHTML、CSS页面来创建本地的模式参照远端web站点,并且是本地 的目录结构和远端的web服务器一样格局。这个有时表示得是递归下载,wget遵守机器人递归下 载标准(Robot Exclusion Standard)。wget会转换下载后的文件中的链接到本地文件(根 据连接下载文件) 为的是能够本地脱机查看网页。
wget对于缓慢的、不稳定的网络环境连接来说是强壮的;如果由于网络问题而导致一个文件下载失 败,他将重新获得直到整个文件都被下载完成,如果服务器支持reget,他将告诉服务器继续下载, 从他断开连接的地方。
选项
选项语法
由于GNU wget使用的是getopt 这个函数调用来获得进程的命令行参数,所以每一个选项都有一个长得的和一个短的选项与之对应。长选项更容易让人记得 ,但是得花时间去输入(type)。你可以自由的混合不同的选项styles,或者你可以在命令参数后面使用options(选项),你可以这样写
wget-r --tries=10 http://fly.srk.fer.hr/ -o log
选项和参数之间的空格是可以忽略掉的,代替-o log 可以是-olog
你也可以把几个不带参数的选项放到一起,像这样
wget-drc <URL>
上面的等效于wget -d -r -c <URL>
由于在选项参数后面可以再次使用选项,你可以使用--来终止他,像这样
wget-o log -- -x
选项接受逗号分割列表参数的是遵守如果列表是一个空值的话,表示清空这个参数的值,这个对于清除.wgetrc设置很有帮助。例如:如果.wgetrc文件文件中设置了"exclude_directories"(排除) 对于/cgi-bin这个目录,下面的这个命令将清空这个值,然后设置上 /~nobody and /~somebody的排除目录。你也设置.wgetrc这个文件来设置exclude_directories这个选项
wget-X " -X /~nobody,/~somebody
大部分选项不接受参数的是bool选项,因此命名的缘由是这些选项的状态是由yes或者no的值。例如:--follow-ftp来告诉wget对于FTP链接也要下载,从另一方面--no-glob 告诉wget对于FTP url的通配符是不下载的。一个bool选项或者是肯定(affirmative )或者是否定(negative )全部的选项都是共享几个选项。
除非该选项是置上状态了,否则他的默认状态是和这个选项相反的行为。例如:--follow-ftp 不置上的默认行为就是对于web页面的FTP链接是不连接下载的。
肯定的选项在前面加上--no- 变成否定的选项;否定的选项去掉前面的--no- 会变成肯定的,这个可能被认为是多余的如果一个肯定的选项默认行为是不多什么事情,而我们提供一种方式来关闭他? 但是启动文件实际上修改默认行为。例如使用follow_ftp = on在.wgetrc 中是wget默认支持FTP链接下载 和使用—no-follow-ftp来在命令行中修改follow-ftp的默认行为。
基本的启动选项:
-V
--version展示wget的版本。
-h
--help输出wget的命令行选项的帮助信息
-b
--backgroud启动完后就到后台去运行,如果没有输出文件通过 -o 标识的话,输出就直接重定 向到wget-log这个文件中
-e command
--excutecommand 执行命令好像是.wgetrc的一部分,一个命令的触发在.wgetrc文件中的 命令执行完之后。如果你想执行多个命令使用-e
登录和输入文件选项:
-o logfile
--output-file=logfile写所有日志信息到logfile文件中,一般正常这些日志信息都输出到标准 错误上
-a logfile
--append-output=logfile把日志信息追加到logfile文件,这个选项相同于-o仅仅是追加到 日志文件,而不是覆盖旧的日志文件。如果一个日志文件不存在,那 么就会直接创建一个日志文件。
-d
--debug开启debug模式,一般是为了开发者来调试模块的
-q
--quiet关掉wget的输出。
-v
--verbose打开详细的输出,带着全部变量的数据 ,默认是开启的
-nv
--no-verbose关闭详细信息输出,但是错误信息和 标准信息还是会输出的。
-i file
--input-file= file 读下载的url从一个本地或者外部的文件,如果-赋值为file的话,URLs读取就会在标准输入
如果这个函数被使用,可以没有url在命令行上。如果既有url文件和命令行url的话,这些命令行上的url 首先被wget。如果—force-html没有被标识的话,然后这个url文件是由一行一个url组成。
然而,如果你使用--force-html,这个文件就当作是html,在这种情况下对于相对链接会出现问题,你可以通过添加"<base href="url">" 到这个文件中,或者在命令行上使用--base=url 这个命令,来确定根路径。
如果这个文件是一个外部文件,这个文件自动会被当作html如果文件的Content-Type 是 text/html类型的,更深一步来说,如果什么都没有标识的话,这个url文件的位置会被当作base href地址
-F
--force-html当输入读取是从一个文件的时候,强制把这个文件当作一个HTML文件
-B URL
--base=url当读URL从html文件中,解决相对链接用URL作为引用起点。这个等价于HTML的base标记在HTML输入文件中。
下载选项:
--bind-address=ADDRESS当进行TCP/IP链接的时候,帮定一个本机地址,ADDRESS可以是一个主机名或者一个ip,这个选项是对多ip的主机很有用。
-t number
--tries=number设置尝试次数,如果是0或者inf的话 ,表示尝试无穷次,默认是尝试20次如果是内部错误(connection refused、not found"(404))就不会重试了。
-O file
--output-document=file
这个文档将不被一个适当的文档来写,但是全部的内容都被串联在一起才写文件,如果-赋值给file的话,文件将被输出到标准输出上,
这个就为了把下载的文件内容自己命名下,比如说wget -O baidu www.baidu.com就会把www.baidu.com这个文件中的内容写到baidu这个文件中去
-nc 如果没有标识的话,下载相同文件名字的页面的时候就会变成 name 、name1。。。-nc、 使更 新的文件不再下载
-c 继续下载未下载完的文件
-N 打开时间戳
-S 打印http服务器和FTP服务器的恢复头
--spider来检查这个服务器页面或者文件是否存在
-T 设置网络超时时间,等价于--dns-timeout,--connect-timeout, and –read-timeout,默认是900s
-dns-timeout=seconds
设置DNS查找时间
--connect-timeout=seconds
设置TCP连接时间
--read-timeout=seconds
设置读取超时时间
--limit-rate=amount
这是下载速率每秒amount字节,也可以是kb Mb
-w second 表示两个页面之间需要等待多久,这个是为了减少web服务器的负载
--waitretry=seconds如果你不想在每次获取完页面之后等待,而是获取失败后等待的话,就是 用这个选项
--random-wait是为了防止web服务器管理员发现 wget请求,这样就让wget页面请求时间间隔每次在0.5 and 1.5 * wait 之间浮动,就不会被管理员发现了
--no-proxy不使用代理
-Qquota 表示下载量
--no-dns-cache不实用dns缓存。
--user=user
--password=password 使用用户和密码的服务器441