zoukankan      html  css  js  c++  java
  • 利用wget批量下载http目录下文件

    原理:下载你需要down的目录页面的index.html,可能名字不是如此!!!
    之后用wget下载该文件里包含的所有链接!

    例如:wget -vE -rLnp -nH --tries=20 --timeout=40 --wait=5 http://mirrors.163.com/gentoo/distfiles/
    或者简单点:wget -m http://mirrors.163.com/gentoo/distfiles/
    你 会得到distfiles页面的index.html文件,该文件内容当然不用说了,里面包含distfiles目录下的所有源码包的链接,要得到这个文 件很容易,一个-m参数也可以,但该文件比较大,为防止超时,等待等问题,可以加tries,timeout,wait等参数解决。

    wget -nc -B http://mirrors.163.com/gentoo/distfiles/ -F -nH --cut-dirs=3 -i index.html

    Ok!!!

    后 来决定用tom的镜像来同步下载,但是发现tom竟然不允许浏览访问他们gentoo镜像页面当然也就得不到distfiles的 index.html,于是尝试用163得到的index.html代替,毕竟里面存放的都是相对路径,所以只需要用tom的distfiles目录代替 163的路径,同样可以从tom下载163的index.html里列出来的镜像文件!

    参数解释:
    -B 给指定的文件里的URLs增加路径前缀
    -nc:下载时跳过已经存在的文件
    -nH:不创建主机名目录
    -i : 下载所有在i参数后面指定的文件中列出的URLs.
    -v : 显示信息
    F : 强制以html 保存
    -r : 递归, 就是抓取子目录的子目录
    L : 相对路径
    np : 不跳到父目录
    --cut-dirs 剪掉主机名后面的相对目录数

       例:
                       No options          -> ftp.xemacs.org/pub/xemacs/
                       -nH                       -> pub/xemacs/
                       -nH --cut-dirs=1  -> xemacs/
                       -nH --cut-dirs=2  -> .

                       --cut-dirs=1      -> ftp.xemacs.org/xemacs/
                       ...

    还很多乱七八遭的参数,比如制定目录啊,过滤啊,等等,

    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
    -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 不创建目录,wget默认会创建一个目录
    -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 代表无穷).
        -l1 (L one) 递归一层,只下载指定文件夹中的内容, 不下载下一级目录中的.
    --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 不要追溯到父目录

    ftp协议发布的文件的话就比较简单了,可以用 -r 参数 加通配符*来替代,完全可以实现递归下载!

  • 相关阅读:
    window XP下 php5.5+mysql+apache2+phpmyadmin安装
    poj2478Farey Sequence
    poj2723Get Luffy Out
    niop2015day2
    P2473 [SCOI2008]奖励关
    P4284 [SHOI2014]概率充电器
    P2486 [SDOI2011]染色
    noip2015day1
    hdu 2795 Billboard
    exgcd
  • 原文地址:https://www.cnblogs.com/UnGeek/p/4375604.html
Copyright © 2011-2022 走看看