zoukankan      html  css  js  c++  java
  • wget 使用说明

    wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.

    所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。 
    wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作"递归下载"。在递归下载的时候,wget 遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。 
    wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务 器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

    wget官网:  http://www.gnu.org/software/wget/

    Wget是一个十分常用命令行下载工具,多数Linux发行版本都默认包含这个工具。如果没有安装可在 http: //www.gnu.org/software/wget/wget.html 下载最新版本,并使用如下命令编译安装:
      # tar zxvf wget-1.9.1.tar.gz
      # cd wget-1.9.1
      # ./configure
      # make
      # make install

    wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点:
    win环境下的wget.exe 下载: http://users.ugent.be/~bpuype/wget/   
    下载了windows的版本后,从命令行启动它。

    wget is a command line program. You start it from the command prompt, either command.com in Windows 9x/Me or cmd.exe in Windows 2000/XP. The command prompt can be found in the Start Menu (Accessories).

    wget.exe must be placed in your path (e.g. c:\windows) if you want to be able to run it from any directory.

    To retrieve a file: wget http://users.ugent.be/~bpuype/wget/wget.exe

    把它放在C:\windows目录下,就可以从任何目录启动它。

     (1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了; 
      (2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件; 
      (3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能; 
      (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标; 
      (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的;

        wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。
        1、下载整个http或者ftp站点。
        wget http://place.your.url/here
        这个命令可以将http://place.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。

    下载的文件默认会到你当前cmd的目录下。

    cd C:\

    C:\wget www.example.com 

    在c盘目录下会多了一个index.html文件,打开这个文件,图片显示不了。

    wget url只会下载这个url指定的文件,不会下载链接文件。

        wget -r http://place.your.url/here
        这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。

        要是您想制作镜像站点,那么可以使用-m参数,例如:wget -m http://place.your.url/here
        这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。

    -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们 
    假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载 
    这个人的个人主页,如果不设置这个选项,甚至--有可能把整个站点给抓下来,这显然是 
    我们通常不希望的.

        2、断点续传。
        当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:
        wget -c http://the.url.of/incomplete/file
        使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。

        3、批量下载。
        如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt
    这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

        4、选择性的下载。
        可以指定让wget只下载一类文件,或者不下载什么文件。例如:
        wget -m --reject=gif http://target.web.site/subdirectory
        表示下载http://target.web.site/subdirectory,但是忽略gif文件。--accept=LIST 可以接受的文件类型,--reject=LIST拒绝接受的文件类型。

        5、密码和认证。
        wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:
        --http-user=USER设置HTTP用户
        --http-passwd=PASS设置HTTP密码
        对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。

        6、利用代理服务器进行下载。
        如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:
        http-proxy = 111.111.111.111:8080
        ftp-proxy = 111.111.111.111:8080
        分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:
        --proxy-user=USER设置代理用户
        --proxy-passwd=PASS设置代理密码 
        这两个参数。
        使用参数--proxy=on/off 使用或者关闭代理。
        wget还有很多有用的功能,需要用户去挖掘。

    附录:

    命令格式:
      wget [参数列表] [目标软件、网页的网址]

      -V,--version 显示软件版本号然后退出;
      -h,--help显示软件帮助信息;
      -e,--execute=COMMAND 执行一个 “.wgetrc”命令

      -o,--output-file=FILE 将软件输出信息保存到文件;
      -a,--append-output=FILE将软件输出信息追加到文件;
      -d,--debug显示输出信息;
      -q,--quiet 不显示输出信

    wget各种选项分类列表

    • 启动
    -V,  --version           显示wget的版本后退出
    -h,  --help              打印语法帮助
    -b,  --background        启动后转入后台执行
    -e,  --execute=COMMAND   执行`.wgetrc'格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc
    • 记录和输入文件
    -o,  --output-file=FILE     把记录写到FILE文件中
    -a,  --append-output=FILE   把记录追加到FILE文件中
    -d,  --debug                打印调试输出
    -q,  --quiet                安静模式(没有输出)
    -v,  --verbose              冗长模式(这是缺省设置)
    -nv, --non-verbose          关掉冗长模式,但不是安静模式
    -i,  --input-file=FILE      下载在FILE文件中出现的URLs

    url.txt: Invalid URL www.keenthemes.com/preview/metronic/theme/assets/global/img/portlet-collapse-ic
    on.png: 不支持的主题

    -F,  --force-html           把输入文件当作HTML格式文件对待
    -B,  --base=URL             将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
    --sslcertfile=FILE     可选客户端证书
    --sslcertkey=KEYFILE   可选客户端证书的KEYFILE
    --egd-file=FILE        指定EGD socket的文件名
    • 下载
    --bind-address=ADDRESS   指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
    -t,  --tries=NUMBER           设定最大尝试链接次数(0 表示无限制).
    -O   --output-document=FILE   把文档写到FILE文件中
    -nc, --no-clobber             不要覆盖存在的文件或使用.#前缀
    -c,  --continue               接着下载没下载完的文件
    --progress=TYPE          设定进程条标记
    -N,  --timestamping           不要重新下载文件除非比本地文件新
    -S,  --server-response        打印服务器的回应
    --spider                 不下载任何东西
    -T,  --timeout=SECONDS        设定响应超时的秒数
    -w,  --wait=SECONDS           两次尝试之间间隔SECONDS秒
    --waitretry=SECONDS      在重新链接之间等待1...SECONDS秒
    --random-wait            在下载之间等待0...2*WAIT秒
    -Y,  --proxy=on/off           打开或关闭代理
    -Q,  --quota=NUMBER           设置下载的容量限制
    --limit-rate=RATE        限定下载输率
    • 目录
    -nd  --no-directories            不创建目录
    -x,  --force-directories         强制创建目录
    -nH, --no-host-directories       不创建主机目录
    -P,  --directory-prefix=PREFIX   将文件保存到目录 PREFIX/...
    --cut-dirs=NUMBER           忽略 NUMBER层远程目录
    • HTTP 选项
    --http-user=USER      设定HTTP用户名为 USER.
    --http-passwd=PASS    设定http密码为 PASS.
    -C,  --cache=on/off        允许/不允许服务器端的数据缓存 (一般情况下允许).
    -E,  --html-extension      将所有text/html文档以.html扩展名保存
    --ignore-length       忽略 `Content-Length'头域
    --header=STRING       在headers中插入字符串 STRING
    --proxy-user=USER     设定代理的用户名为 USER
    --proxy-passwd=PASS   设定代理的密码为 PASS
    --referer=URL         在HTTP请求中包含 `Referer: URL'头
    -s,  --save-headers        保存HTTP头到文件
    -U,  --user-agent=AGENT    设定代理的名称为 AGENT而不是 Wget/VERSION.
    --no-http-keep-alive  关闭 HTTP活动链接 (永远链接).
    --cookies=off         不使用 cookies.
    --load-cookies=FILE   在开始会话前从文件 FILE中加载cookie
    --save-cookies=FILE   在会话结束后将 cookies保存到 FILE文件中
    • FTP 选项
    -nr, --dont-remove-listing   不移走 `.listing'文件
    -g,  --glob=on/off           打开或关闭文件名的 globbing机制
    --passive-ftp           使用被动传输模式 (缺省值).
    --active-ftp            使用主动传输模式
    --retr-symlinks         在递归的时候,将链接指向文件(而不是目录)
    • 递归下载
    -r,  --recursive          递归下载--慎用!
    -l,  --level=NUMBER       最大递归深度 (inf 或 0 代表无穷).
    --delete-after       在现在完毕后局部删除文件
    -k,  --convert-links      转换非相对链接为相对链接
    -K,  --backup-converted   在转换文件X之前,将之备份为 X.orig
    -m,  --mirror             等价于 -r -N -l inf -nr.
    -p,  --page-requisites    下载显示HTML文件的所有图片
    • 递归下载中的包含和不包含(accept/reject)
    -A,  --accept=LIST                分号分隔的被接受扩展名的列表
    -R,  --reject=LIST                分号分隔的不被接受的扩展名的列表
    -D,  --domains=LIST               分号分隔的被接受域的列表
    --exclude-domains=LIST       分号分隔的不被接受的域的列表
    --follow-ftp                 跟踪HTML文档中的FTP链接
    --follow-tags=LIST           分号分隔的被跟踪的HTML标签的列表
    -G,  --ignore-tags=LIST           分号分隔的被忽略的HTML标签的列表
    -H,  --span-hosts                 当递归时转到外部主机
    -L,  --relative                   仅仅跟踪相对链接
    -I,  --include-directories=LIST   允许目录的列表
    -X,  --exclude-directories=LIST   不被包含目录的列表
    -np, --no-parent                  不要追溯到父目录

    息;
      -i,--input-file=FILE 从文件中取得URL;

      -t,--tries=NUMBER 是否下载次数(0表示无穷次)
      -O --output-document=FILE下载文件保存为别的文件名
      -nc, --no-clobber 不要覆盖已经存在的文件
      -N,--timestamping只下载比本地新的文件
      -T,--timeout=SECONDS 设置超时时间
      -Y,--proxy=on/off 关闭代理

        -nd,--no-directories 不建立目录
      -x,--force-directories 强制建立目录

        --http-user=USER设置HTTP用户
      --http-passwd=PASS设置HTTP密码
      --proxy-user=USER设置代理用户
      --proxy-passwd=PASS设置代理密码

        -r,--recursive 下载整个网站、目录(小心使用)
      -l,--level=NUMBER 下载层次

        -A,--accept=LIST 可以接受的文件类型
      -R,--reject=LIST拒绝接受的文件类型
      -D,--domains=LIST可以接受的域名
      --exclude-domains=LIST拒绝的域名
      -L,--relative 下载关联链接
      --follow-ftp 只下载FTP链接
      -H,--span-hosts 可以下载外面的主机
      -I,--include-directories=LIST允许的目录
      -X,--exclude-directories=LIST 拒绝的目录

     常用的命令:

    wget -r -p -np -k http://www.xxx.com 抓取整站

    wget -l 1 -p -np -k http://www.xxx.com 抓取第一级

    (出处:http://dev.xdowns.com/) 

    (

    -r递归: 

     wget -L -l 3   -r -p -np -k  http://www.zhizhugame.com/

    -L 递归时不进入其它主机,如 wget -c -r www.xxx.org/ 如果网站内有一个这样的链接:www.yyy.org,不加参数-L,就会像大火烧山一样,会递归下载www.yyy.org网站;但是现在很多的css、js、img都不在项目的目录下保存,而是在html页面中src一个http引用,所以如果想要一并download当前页面引用的http资源,比如js,css,img,那么这个参数就需要省略

    -l 下载层级,默认最大为5级,一般情况下3级就够了
    -p 下载网页所需的所有文件,如图片等

    9.-np, --no-parent,不追溯至父目录。

     https://blog.csdn.net/tty521/article/details/62886651

    一般用这个:   可以下载某个站点的代码,只要替换下 文字就行了。

     wget   -l 3   -r -p -np -k  http://www.zhizhugame.com/  不要 -L,否则不能下载图片等资源

     上面的方法抓取不了css的url图片:

    利用wget 抓取 网站网页 包括css背景图片

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/youxin/p/2866967.html
Copyright © 2011-2022 走看看