1 我们搭建了一个临时的apache-1.3.41服务器,端口号设置成了61212。网页文件所在路径为/home/rocrocket/program/apache-1.3.41-all/htdocs,我们简称为htdocs目录。
2 在htdocs目录中,我们建立一个index.html文件,内容大致如下:
$ cat -n index.html
以下是引用片段:1
2
3
4
5
6
7
rocrocket-1
8
rocrocket-2
9
10
11
通过网页方式访问的话,效果是这样的:
3 类似的建立如下文件:
$ ls -1 index.html robots.txt roc.html rocrocket-1-1.html rocrocket-1-2.html rocrocket-1.html rocrocket-2-1.html rocrocket-2-2.html rocrocket-2.html根据文件编号,你应该能看出他们之间的调用关系。
4 建立简单的robots.txt文件:
$ cat robots.txt User-agent: * Disallow: rocrocket-2.html这个文件的内容就是要屏蔽rocrocket-2文件的下载和spider。
5 我们用wget来下载这个测试站点:
wget -r :61212/ $ ls -1 index.html robots.txt rocrocket-1-1.html rocrocket-1-2.html rocrocket-1.html看!下载到的包含了robots.txt文件,但没有包含rocrocket-2及其相关的文件。
可见,robots.txt生效了,wget遵守了robots.txt的规则!
6 我如何突破robots.txt的限制呢?
使用-execute选项就可以,这个选项的作用是将其后的参数模拟“放到.wgetrc中的执行效果”。
$ wget -r --execute robots=off :61212/ $ ls -1 index.html rocrocket-1-1.html rocrocket-1-2.html rocrocket-1.html rocrocket-2-1.html rocrocket-2-2.html rocrocket-2.html看,rocrocket-2系列的文件也都顺利的下载下来了
当你深入学习wget时,你会发现它的选项实在是太多了,错综复杂乱如麻。今天,我们就针对常用的目录选项展开讨论。
1 -r选项
这个选项用于下载远程的文件夹,但是情况没有那么简单,对于ftp协议下载来讲,你如果使用如下命令下载
wget -r ftp://my.test.server:/home/wupengchong/img
那么,实际在当前目录下会生成my.test.server/home/wupengchong/img目录结构,可见直接使用-r选项,默认会创建一域名和绝对路径组成的目录结构的。这或许不是我们的初衷,继续向下看。
2 -nd选项
即-no-directories。当我们下载远程的数据时,可以要求wget只下载文件,不下载文件夹,所有下载的文件都平铺在当前目录下。
这时,敏锐的读者会问:“如果下载到不同路径的同名文件的话,那用-nd岂不是会造成同名文件覆盖的问题?”。答案是不会的,因为wget在下载文件时,如果当前目录下有同名文件,则会默认在新下载的文件后加上“.1”、“.2” …等标识,以示区别。
3 -x选项
即-force-directories。这个选项和-no-directories是完全相反的。-no-directories是要求绝 对不能下载和创建任何文件夹,同时所有文件都平铺在当前目录中。而-force-directories选项则要求处处都要有文件夹,即使是wget
-x 这样下载单独普通文件的命令,也会在当前目录下创建fly.srk.fer.hr/home目录结构,然后将robots.txt文件下载到fly.srk.fer.hr/home里面。
4 -nH选项
即-no-host-directories。大家已经知道了在使用wget -r命令下载目录时,默认会创建一个my.test.server文件夹的。使用-nH选项就是来禁止这种默认行为。
所以,当你用wget -r -nH ftp://my.test.server:/home/wupengchong/img命令下载数据时,会在当前目录下创建home/wupengchong/img目录结构,看,my.test.server文件夹已经不见了。
5 -protocol-directories选项
它的作用是先创建一个以协议名为名称的文件夹,例如:
wget -r -protocol-directories ftp://my.test.server:/home/wupengchong/img
则会创建如下目录结构ftp/my.test.server/home/wupengchong/img
这个选项,对于那些希望通过协议类型来区分数据的同学比较有用。
6 -cut-dirs=number选项
这个选项比较常用,它表示下载数据时,在本地创建目录时,忽略多少层目录结构。