Linux命令五分钟

《其实你不懂wget的心-02》

本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。

为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

===

[正文开始]

上次提到了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>

通过网页方式访问的话,效果是这样的:

wget-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

【未完待续】

4条评论

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *