上次提到了wget可以避免robots.txt的事情。这篇文章就做个试验,让大家亲身体验。跟着我的思路来走。
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 <html> 2 <head> 3 <title>rocrocket</title> 4 </head> 5 <body> 6 <ul> 7 <li><a href=rocrocket-1.html>rocrocket-1</li> 8 <li><a href=rocrocket-2.html>rocrocket-2</li> 9 </ul> 10 </body> 11 </html> |
通过网页方式访问的话,效果是这样的:
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 http://my-test.cn: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 http://jx-nsop-test0.jx: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系列的文件也都顺利的下载下来了:D
