php禁止网页抓取(开发小伙伴们要记住的两点:robots.txt是什么?)
优采云 发布时间: 2021-11-11 22:17php禁止网页抓取(开发小伙伴们要记住的两点:robots.txt是什么?)
“爬虫玩得好,监狱早进;爬虫快乐爬,监狱要坐;数据播放,监狱伙食就够了。” 这种在技术圈广为流传的嘲讽并非危言耸听,因为近年来太多优秀的爬虫程序员为此面临牢狱之灾!
为了避免一些不必要的麻烦,开发伙伴必须牢记以下两点:
一、robots.txt 是什么?
robots.txt 是纯文本文件。在这个文件中,网站管理者可以声明网站中不被搜索引擎访问的部分,或者指定搜索引擎只访问收录指定的内容。
当搜索引擎(也称为搜索机器人或蜘蛛程序)访问一个站点时,它会首先检查站点根目录中是否存在robots.txt。如果存在,搜索机器人会根据文件Scope的内容判断访问;如果文件不存在,搜索机器人会沿着链接爬行。
二、robots.txt的作用
1、引导搜索引擎蜘蛛抓取指定的栏目或内容;
2、网站 修改或URL重写优化时屏蔽对搜索引擎不友好的链接;
3、 屏蔽死链接和404错误页面;
4、 屏蔽没有内容和价值的页面;
5、 屏蔽重复页面,例如评论页和搜索结果页;
6、阻止任何不想成为收录的页面;
7、引导蜘蛛抓取地图网站;
三、Robots 语法(三种语法和两种通配符)
三种语法如下:
1、用户代理:(定义搜索引擎)
例子:
用户代理:*(定义所有搜索引擎)
User-agent:Googlebot(定义谷歌,只允许谷歌蜘蛛抓取)
User-agent: 百度蜘蛛(定义百度,只允许百度蜘蛛爬取)
不同搜索引擎的搜索机器人名称不同,谷歌:Googlebot,百度:Baiduspider,MSN:MSNbot,雅虎:Slurp。
2、Disallow:(用于定义不允许蜘蛛爬取的页面或目录)
例子:
Disallow:/(禁止蜘蛛爬取网站的所有目录,“/”表示根目录)
Disallow: /admin(禁止蜘蛛爬取管理目录)
Disallow: /abc.html(禁止蜘蛛爬到abc.html页面)
Disallow: /help.html(禁止蜘蛛爬到help.html页面)
3、Allow:(用于定义允许蜘蛛爬取的页面或子目录)
例子:
Allow:/admin/test/(允许蜘蛛爬取admin下的test目录)
允许:/admin/abc.html(允许蜘蛛爬到admin目录下的abc.html页面)
两个通配符如下:
4、匹配字符“$”
$ 通配符:匹配 URL 末尾的字符
5、通配符“*”
* 通配符:匹配0个或多个任意字符
四、robots.txt 综合示例
1、禁止搜索引擎抓取特定目录
在这个例子中,网站有三个限制搜索引擎访问的目录,即搜索引擎不会访问这三个目录。
用户代理:* 禁止:/admin/
禁止:/tmp/
禁止:/abc/
2、禁止admin目录,但允许爬取admin目录下的seo子目录
用户代理:* 允许:/admin/seo/
禁止:/管理员/
3、禁止抓取/abc/目录(包括子目录)中所有后缀为“.htm”的URL
用户代理:* 禁止:/abc/*.htm$
4、禁止抓取网站中的所有动态页面
用户代理:* 禁止:/?
用“?”阻止所有文件,以便阻止所有动态路径。
5、百度蜘蛛禁止爬取网站所有图片:
用户代理:百度蜘蛛
禁止:/.jpg$
禁止:/.jpeg$
禁止:/.gif$
禁止:/.png$
禁止:/*.bmp$
6、为了防止 网站 页面被抓取,同时这些页面上仍然展示 AdSense 广告
用户代理:* 禁止:/folder1/
用户代理:Mediapartners-Google
允许:/folder1/
请禁止除 Mediapartners-Google 之外的所有机器人。这可以防止页面出现在搜索结果中,同时允许 Mediapartners-Google 机器人分析页面以确定要显示哪些广告。Mediapartners-Google 机器人不会与其他 Google 用户代理共享网页。
五、备注
1、robots.txt文件必须放在网站的根目录下,不能放在子目录下。
以吴俊泽的博客网站为例:比如可以访问robots.txt文件。
2、robots.txt 文件名必须小写,记得给robot加上“s”。
3、User-agent, Allow, Disallow 的“:”后跟一个字符空格。
4、 路径后加斜线“/”和不加斜线是有区别的
禁止:/帮助
防止蜘蛛访问 /help.html、/helpabc.html、/help/index.html
禁止:/帮助/
防止蜘蛛访问 /help/index.html。但允许访问 /help.html, /helpabc.html
5、Disallow 和 Allow 行的顺序是有意义的:
例如:
允许蜘蛛访问/admin/目录下的seo文件夹
用户代理:* 允许:/admin/seo/
禁止:/管理员/
如果 Allow 和 Disallow 的顺序颠倒:
用户代理:* 禁止:/admin/
允许:/admin/seo/
蜘蛛无法访问/admin/目录下的seo文件夹,因为第一个Disallow:/admin/已经匹配成功。
六、关于机器人元
Robots.txt 文件主要是限制搜索引擎对整个站点或目录的访问,而Robots Meta 标签主要是针对特定页面的。与其他META标签(如使用的语言、页面描述、关键词等)一样,Robots Meta标签也放置在页面上,专门告诉搜索引擎ROBOTS如何抓取内容页面的。
Robots Meta标签没有大小写区分,name="Robots"表示所有搜索引擎,可以针对特定的搜索引擎(如google)编写,内容部分有四个命令选项:index、noindex、 follow, nofollow , 并且说明之间用“,”隔开。
Index指令告诉搜索机器人抓取页面;
NoIndex 命令:告诉搜索引擎不要抓取这个页面
跟随指令意味着搜索机器人可以沿着页面上的链接继续爬行;
NoFollow 命令:告诉搜索引擎不允许从此页面找到链接并拒绝其继续访问。
Robots Meta标签的默认值为Index和Follow;
根据上面的命令,我们有以下四种组合:
你可以抓取这个页面,你可以继续索引这个页面上的其他链接=
您无权抓取此页面,但您可以抓取此页面上的其他链接并将其编入索引
您可以抓取此页面,但不允许抓取此页面上的其他链接并将其编入索引
您不得抓取此页面,也不得沿此页面抓取以索引其他链接。
七、关于
将“nofollow”放在超链接中以告诉搜索引擎不要抓取特定链接。