简洁的想法

 找回密码
 注册
搜索
查看: 867|回复: 4

wget——优秀的下载工具

[复制链接]
发表于 2006-9-1 17:50:38 | 显示全部楼层 |阅读模式
转自:http://heli.blogchina.com/js/1293388.html
                                    
wget是一个命令行工具,用于批量下载文件,支持HTTP和FTP。究竟比其他的工具好在哪里?看看内容吧 :)
wget基本上所有的Linux版本都自己带了,但是有多少人在用呢?呵呵,如果你没有用过,不妨试试。Windows下面的用户可以使用GNUwin32的项目,wget,基本功能完全一致。好吧,我们来以几个简单的例子看看wget的威力。
如果我们想下载ftp里面某个目录里面的所有文件,我们也可以不用ftp这个笨蛋,呵呵,可以享受cute ftp等图形化工具的拖一个目录的轻松了。如
wget -r ftp://10.8.8.8/movie/

呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子
wget -r -nd ftp://10.8.8.8/movie/

结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用
wget -r -nH ftp://10.8.8.8/movie/

恩?movie也不要?OK,那就这样
wget -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

这有什么用啊?cuteftp比他好用多了,而且,你这断了线能连吗?呵呵,不好意思,可以连
wget -c -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

但是cuteftp能做下面的事情吗?比如,现在很多网站使用Apache建站,并不提供ftp服务,但是Apache有一个indexing功能,可以提供一个类似于ftp的界面,好多文件我想下啊,怎么办?由于是HTTP协议,CuteFTP无能为力了,倒是flash get等有什么get all这种功能,不知道他们对于目录处理怎么样。但是wget一点问题都没有,不信?我们拿CTAN为例(例子并不恰当,CTAN有FTP服务),我们下载这里面所有的宏包,呵呵
wget -r -k http://www.ctan.org/tex-archive/macros/latex/

-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么
wget -r -l2 -k http://www.ctan.org/tex-archive/macros/latex/

现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧
wget -r -R "*.htm*\?*" -k http://www.ctan.org/tex-archive/macros/latex/

这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A "*.gif"将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。

那么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在 bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum等等)
export http_proxy=http://10.20.30.40:8080

然后,proxy就默认打开了,如果需要暂时关闭,可以使用
wget --proxy=off -r -k http://www.ctan.org/tex-archive/macros/latex/

当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。
下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用
wget -nc -r -k http://www.ctan.org/tex-archive/macros/latex/

可以避免这件事情。为了不被有的连接指向非http://www.ctan.org/tex-archive/macros/latex/内层目录,我们还应该加上
wget -nc -np -r -k http://www.ctan.org/tex-archive/macros/latex/

避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用
wget -nc -np -H -r -k http://www.ctan.org/tex-archive/macros/latex/

使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由这种东西作出来的,你就得使用--follow-tags--ignore-tags了。
嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要
wget -i your.file

如果是,那也不繁
wget -F -i your.file

  1. wget -r -nH -l0 --cut-dirs=1 ftp://user:pass@www.example.com/admin/
复制代码


-l0 深入n级目录, 0 表示无限制

  1. wget -r -c -k -np -nH -nc -l0 -R index.html -e robots=off --cut-dirs=1 --restrict-file-names=nocontrol -D www.example.com https://www.example.com/download/
  2. -r,  --recursive           指定递归下载
  3. -c,  --continue            断点续传下载文件。
  4. -k,  --convert-links       让下载得到的 HTML 或 CSS 中的链接指向本地文件。
  5. -np, --no-parent           不追溯至父目录
  6. -nH, --no-host-directories 不要创建主目录。
  7. -nc, --no-clobber          Skip downloads that would download to existing files (overwriting them).
  8. -l,  --level=NUMBER        最大递归深度 (inf 或 0 代表无限制,即全部下载)。
  9. -R index.html              不下载 index.html 文件
  10. -e robots=off
  11. --cut-dirs=NUMBER          忽略远程目录中 NUMBER 个目录层。
  12. --restrict-file-names=nocontrol  限定文件名中的字符为 OS 允许的字符,nocontrol 防中文乱码
复制代码
 楼主| 发表于 2020-12-31 21:33:46 | 显示全部楼层
GNU Wget 1.14,非交互式的网络文件下载工具。

  1. 用法: wget [选项]... [URL]...

  2. 长选项所必须的参数在使用短选项时也是必须的。

  3. 启动:
  4.   -V,  --version           显示 Wget 的版本信息并退出。
  5.   -h,  --help              打印此帮助。
  6.   -b,  --background        启动后转入后台。
  7.   -e,  --execute=COMMAND   运行一个“.wgetrc”风格的命令。

  8. 日志和输入文件:
  9.   -o,  --output-file=FILE    将日志信息写入 FILE。
  10.   -a,  --append-output=FILE  将信息添加至 FILE。
  11.   -d,  --debug               打印大量调试信息。
  12.   -q,  --quiet               安静模式 (无信息输出)。
  13.   -v,  --verbose             详尽的输出 (此为默认值)。
  14.   -nv, --no-verbose          关闭详尽输出,但不进入安静模式。
  15.        --report-speed=TYPE   Output bandwidth as TYPE.  TYPE can be bits.
  16.   -i,  --input-file=FILE     下载本地或外部 FILE 中的 URLs。
  17.   -F,  --force-html          把输入文件当成 HTML 文件。
  18.   -B,  --base=URL            解析与 URL 相关的
  19.                              HTML 输入文件 (由 -i -F 选项指定)。
  20.        --config=FILE         Specify config file to use.

  21. 下载:
  22.   -t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)。
  23.        --retry-connrefused       即使拒绝连接也是重试。
  24.   -O,  --output-document=FILE    将文档写入 FILE。
  25.   -nc, --no-clobber              skip downloads that would download to
  26.                                  existing files (overwriting them).
  27.   -c,  --continue                断点续传下载文件。
  28.        --progress=TYPE           选择进度条类型。
  29.   -N,  --timestamping            只获取比本地文件新的文件。
  30.   --no-use-server-timestamps     不用服务器上的时间戳来设置本地文件。
  31.   -S,  --server-response         打印服务器响应。
  32.        --spider                  不下载任何文件。
  33.   -T,  --timeout=SECONDS         将所有超时设为 SECONDS 秒。
  34.        --dns-timeout=SECS        设置 DNS 查寻超时为 SECS 秒。
  35.        --connect-timeout=SECS    设置连接超时为 SECS 秒。
  36.        --read-timeout=SECS       设置读取超时为 SECS 秒。
  37.   -w,  --wait=SECONDS            等待间隔为 SECONDS 秒。
  38.        --waitretry=SECONDS       在获取文件的重试期间等待 1..SECONDS 秒。
  39.        --random-wait             获取多个文件时,每次随机等待间隔
  40.                                  0.5*WAIT...1.5*WAIT 秒。
  41.        --no-proxy                禁止使用代理。
  42.   -Q,  --quota=NUMBER            设置获取配额为 NUMBER 字节。
  43.        --bind-address=ADDRESS    绑定至本地主机上的 ADDRESS (主机名或是 IP)。
  44.        --limit-rate=RATE         限制下载速率为 RATE。
  45.        --no-dns-cache            关闭 DNS 查寻缓存。
  46.        --restrict-file-names=OS  限定文件名中的字符为 OS 允许的字符。
  47.        --ignore-case             匹配文件/目录时忽略大小写。
  48.   -4,  --inet4-only              仅连接至 IPv4 地址。
  49.   -6,  --inet6-only              仅连接至 IPv6 地址。
  50.        --prefer-family=FAMILY    首先连接至指定协议的地址
  51.                                  FAMILY 为 IPv6,IPv4 或是 none。
  52.        --user=USER               将 ftp 和 http 的用户名均设置为 USER。
  53.        --password=PASS           将 ftp 和 http 的密码均设置为 PASS。
  54.        --ask-password            提示输入密码。
  55.        --no-iri                  关闭 IRI 支持。
  56.        --local-encoding=ENC      IRI (国际化资源标识符) 使用 ENC 作为本地编码。
  57.        --remote-encoding=ENC     使用 ENC 作为默认远程编码。
  58.        --unlink                  remove file before clobber.

  59. 目录:
  60.   -nd, --no-directories           不创建目录。
  61.   -x,  --force-directories        强制创建目录。
  62.   -nH, --no-host-directories      不要创建主目录。
  63.        --protocol-directories     在目录中使用协议名称。
  64.   -P,  --directory-prefix=PREFIX  以 PREFIX/... 保存文件
  65.        --cut-dirs=NUMBER          忽略远程目录中 NUMBER 个目录层。

复制代码
 楼主| 发表于 2020-12-31 21:33:55 | 显示全部楼层
  1. HTTP 选项:
  2.        --http-user=USER        设置 http 用户名为 USER。
  3.        --http-password=PASS    设置 http 密码为 PASS。
  4.        --no-cache              不在服务器上缓存数据。
  5.        --default-page=NAME     改变默认页
  6.                                (默认页通常是“index.html”)。
  7.   -E,  --adjust-extension      以合适的扩展名保存 HTML/CSS 文档。
  8.        --ignore-length         忽略头部的‘Content-Length’区域。
  9.        --header=STRING         在头部插入 STRING。
  10.        --max-redirect          每页所允许的最大重定向。
  11.        --proxy-user=USER       使用 USER 作为代理用户名。
  12.        --proxy-password=PASS   使用 PASS 作为代理密码。
  13.        --referer=URL           在 HTTP 请求头包含‘Referer: URL’。
  14.        --save-headers          将 HTTP 头保存至文件。
  15.   -U,  --user-agent=AGENT      标识为 AGENT 而不是 Wget/VERSION。
  16.        --no-http-keep-alive    禁用 HTTP keep-alive (永久连接)。
  17.        --no-cookies            不使用 cookies。
  18.        --load-cookies=FILE     会话开始前从 FILE 中载入 cookies。
  19.        --save-cookies=FILE     会话结束后保存 cookies 至 FILE。
  20.        --keep-session-cookies  载入并保存会话 (非永久) cookies。
  21.        --post-data=STRING      使用 POST 方式;把 STRING 作为数据发送。
  22.        --post-file=FILE        使用 POST 方式;发送 FILE 内容。
  23.        --content-disposition   当选中本地文件名时
  24.                                允许 Content-Disposition 头部 (尚在实验)。
  25.        --content-on-error      output the received content on server errors.
  26.        --auth-no-challenge     发送不含服务器询问的首次等待
  27.                                的基本 HTTP 验证信息。

  28. HTTPS (SSL/TLS) 选项:
  29.        --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,
  30.                                 SSLv3, TLSv1, TLSv1_1 and TLSv1_2.
  31.        --no-check-certificate   不要验证服务器的证书。
  32.        --certificate=FILE       客户端证书文件。
  33.        --certificate-type=TYPE  客户端证书类型,PEM 或 DER。
  34.        --private-key=FILE       私钥文件。
  35.        --private-key-type=TYPE  私钥文件类型,PEM 或 DER。
  36.        --ca-certificate=FILE    带有一组 CA 认证的文件。
  37.        --ca-directory=DIR       保存 CA 认证的哈希列表的目录。
  38.        --random-file=FILE       带有生成 SSL PRNG 的随机数据的文件。
  39.        --egd-file=FILE          用于命名带有随机数据的 EGD 套接字的文件。

  40. FTP 选项:
  41.        --ftp-user=USER         设置 ftp 用户名为 USER。
  42.        --ftp-password=PASS     设置 ftp 密码为 PASS。
  43.        --no-remove-listing     不要删除‘.listing’文件。
  44.        --no-glob               不在 FTP 文件名中使用通配符展开。
  45.        --no-passive-ftp        禁用“passive”传输模式。
  46.        --preserve-permissions  保留远程文件的权限。
  47.        --retr-symlinks         递归目录时,获取链接的文件 (而非目录)。

  48. WARC options:
  49.        --warc-file=FILENAME      save request/response data to a .warc.gz file.
  50.        --warc-header=STRING      insert STRING into the warcinfo record.
  51.        --warc-max-size=NUMBER    set maximum size of WARC files to NUMBER.
  52.        --warc-cdx                write CDX index files.
  53.        --warc-dedup=FILENAME     do not store records listed in this CDX file.
  54.        --no-warc-compression     do not compress WARC files with GZIP.
  55.        --no-warc-digests         do not calculate SHA1 digests.
  56.        --no-warc-keep-log        do not store the log file in a WARC record.
  57.        --warc-tempdir=DIRECTORY  location for temporary files created by the
  58.                                  WARC writer.

  59. 递归下载:
  60.   -r,  --recursive          指定递归下载。
  61.   -l,  --level=NUMBER       最大递归深度 (inf 或 0 代表无限制,即全部下载)。
  62.        --delete-after       下载完成后删除本地文件。
  63.   -k,  --convert-links      让下载得到的 HTML 或 CSS 中的链接指向本地文件。
  64.   --backups=N   before writing file X, rotate up to N backup files.
  65.   -K,  --backup-converted   在转换文件 X 前先将它备份为 X.orig。
  66.   -m,  --mirror             -N -r -l inf --no-remove-listing 的缩写形式。
  67.   -p,  --page-requisites    下载所有用于显示 HTML 页面的图片之类的元素。
  68.        --strict-comments    用严格方式 (SGML) 处理 HTML 注释。

  69. 递归接受/拒绝:
  70.   -A,  --accept=LIST               逗号分隔的可接受的扩展名列表。
  71.   -R,  --reject=LIST               逗号分隔的要拒绝的扩展名列表。
  72.        --accept-regex=REGEX        regex matching accepted URLs.
  73.        --reject-regex=REGEX        regex matching rejected URLs.
  74.        --regex-type=TYPE           regex type (posix|pcre).
  75.   -D,  --domains=LIST              逗号分隔的可接受的域列表。
  76.        --exclude-domains=LIST      逗号分隔的要拒绝的域列表。
  77.        --follow-ftp                跟踪 HTML 文档中的 FTP 链接。
  78.        --follow-tags=LIST          逗号分隔的跟踪的 HTML 标识列表。
  79.        --ignore-tags=LIST          逗号分隔的忽略的 HTML 标识列表。
  80.   -H,  --span-hosts                递归时转向外部主机。
  81.   -L,  --relative                  只跟踪有关系的链接。
  82.   -I,  --include-directories=LIST  允许目录的列表。
  83.   --trust-server-names             use the name specified by the redirection
  84.                                    url last component.
  85.   -X,  --exclude-directories=LIST  排除目录的列表。
  86.   -np, --no-parent                 不追溯至父目录。
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|Archiver|简洁的想法

GMT+1, 2021-3-9 02:32

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表