笔记-爬虫-robots.txt

1.      robots.txt文件简介

1.1.    是什么

robots.txt是用来告诉搜索引擎网站上哪些内容可以被访问、哪些不能被访问。当搜索引擎访问一个网站的时候,它首先会检查网站是否存在robots.txt,如果有则会根据文件命令访问有权限的文件。

每个网站需要根据自身的要求写好robots.txt文件,以CSDN为例:

访问https://www.csdn.net/robots.txt

User-agent: *

Disallow: /scripts

Disallow: /public

Disallow: /css/

Disallow: /images/

Disallow: /content/

Disallow: /ui/

Disallow: /js/

Disallow: /scripts/

Disallow: /article_preview.html*

Disallow: /tag/

Sitemap: http://www.csdn.net/article/sitemap.txt

1.2.    为什么要这样?

一个网站为什么要写robots.txt,主要有四点:

1、保护网站安全

2、节省流量

3、禁止搜索引擎收录部分页面

4、引导蜘蛛爬网站地图

2.      robots.txt的语法

1、定义搜索引擎

User-agent:定义搜索引擎,其中*表示所有,Baiduspider表示百度蜘蛛,Googlebot表示谷歌蜘蛛。

也就是说User-agent:*表示定义所有蜘蛛,User-agent:Baiduspider表示定义百度蜘蛛。

2、禁止与允许访问

Disallow: /表示禁止访问,Allow: /表示允许访问。

在写robots.txt时需特别注意的是,/前面有一个英文状态下的空格(必须是英文状态下的空格)。

3、禁止搜索引擎访问网站中的某几个文件夹,以a、b、c为例,写法分别如下:

Disallow: /a/

Disallow: /b/

Disallow: /c/

3、禁止搜索引擎访问文件夹中的某一类文件,以a文件夹中的js文件为例,写法如下:

Disallow: /a/*.js

4、只允许某个搜索引擎访问,以Baiduspider为例,写法如下:

User-agent: Baiduspider

Disallow:

5、禁止访问网站中的动态页面

User-agent: *

Disallow: /*?*

6、只允许搜索引擎访问某类文件,以htm为例,写法如下:

User-agent: *

Allow: .htm$

Disallow: /

7、禁止某个搜索引擎抓取网站上的所有图片,以Baiduspider为例,写法如下:

User-agent: F

Disallow: .jpg$

Disallow: .jpeg$

Disallow: .gif$

Disallow: .png$

Disallow: .bmp$

3.      robots.txt文件存放位置

robots.txt文件存放在网站根目录下,并且文件名所有字母都必须小写。

4.      其它注意事项

写robots.txt文件时语法一定要用对,User-agent、Disallow、Allow、Sitemap这些词都必须是第一个字母大写,后面的字母小写,而且在:后面必须带一个英文字符下的空格。

网站上线之前切记写robots.txt文件禁止蜘蛛访问网站,如果不会写就先了解清楚写法之后再写,以免给网站收录带来不必要的麻烦。

robots.txt文件生效时间在几天至一个月之间,站长自身无法控制。但是,站长可以在百度统计中查看网站robots.txt文件是否生效。

5.      python中robots.txt解析

在urllib包中已有robotparse用于解析

5.1.    使用示例

from urllib import robotparser

rp = robotparser.RobotFileParser()
rp.set_url("https://www.csdn.net/robots.txt")

rp.read()
url = "https://www.csdn.net"
user_agent = "ddt"
print(rp.can_fetch(user_agent,url))

5.2.  常用方法

set_url(),用来设置 robots.txt 文件的链接。如果已经在创建
RobotFileParser 对象时传入了链接,那就不需要再使用这个方法设置了。

read(),读取 robots.txt 文件并进行分析,注意这个函数是执行一个读取和分析操作,如果不调用这个方法,接下来的判断都会为 False,所以一定记得调用这个方法,这个方法不会返回任何内容,但是执行了读取操作。

parse(),用来解析 robots.txt 文件,传入的参数是
robots.txt 某些行的内容,它会按照 robots.txt 的语法规则来分析这些内容。

can_fetch(),方法传入两个参数,第一个是
User-agent,第二个是要抓取的 URL,返回的内容是该搜索引擎是否可以抓取这个 URL,返回结果是 True 或 False。

mtime(),返回的是上次抓取和分析
robots.txt 的时间,这个对于长时间分析和抓取的搜索爬虫是很有必要的,你可能需要定期检查来抓取最新的 robots.txt。

modified(),同样的对于长时间分析和抓取的搜索爬虫很有帮助,将当前时间设置为上次抓取和分析 robots.txt 的时间。

from urllib.robotparser import
RobotFileParser

rp=RobotFileParse()

rp.set_url('http://www.jianshu.com/robots.txt')

#也可以直接设置rp=RobotFileParse('http://www.jianshu.com/robots.txt')

re.read()

#也可以这么设置rp.parse(urlopen('http://www.jianshu.com/robots.txt').read().decode('utf-8').splict('\n'))

print(rp.can_fetch('*','http://www.jianshu.com/p/b67554025d7d'))

print(rp.can_fetch('*', "http://www.jianshu.com/search?q=python&page=1&type=collections"))

笔记-爬虫-robots.txt的更多相关文章

  1. Robots.txt - 禁止爬虫(转)

    Robots.txt - 禁止爬虫 robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: v ...

  2. 从robots.txt開始网页爬虫之旅

    做个网页爬虫或搜索引擎(下面统称蜘蛛程序)的各位一定不会陌生,在爬虫或搜索引擎訪问站点的时候查看的第一个文件就是robots.txt了.robots.txt文件告诉蜘蛛程序在server上什么文件是能 ...

  3. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt

    Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以 ...

  4. 离robots.txt启动网络爬虫之旅

    要成为一个网络爬虫或搜索引擎(在这里,共同蜘蛛)它不会陌生,在搜索引擎爬虫的第一个文件或者访问该网站上浏览robots.txt该.robots.txt文件讲述了蜘蛛server哪些文件要观看正在. 当 ...

  5. 如何设置让网站禁止被爬虫收录?robots.txt

    robot.txt只是爬虫禁抓协议,user-agent表示禁止哪个爬虫,disallow告诉爬出那个禁止抓取的目录. 如果爬虫够友好的话,会遵守网站的robot.txt内容. 一个内部业务系统,不想 ...

  6. Robots.txt - 禁止爬虫

    robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: value.常见的规则行:User-A ...

  7. 爬虫出现Forbidden by robots.txt(转载 https://blog.csdn.net/zzk1995/article/details/51628205)

    先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决. 使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息F ...

  8. Scrapy 爬虫日志中出现Forbidden by robots.txt

    爬取汽车之家数据的时候,日志中一直没有任何报错,开始一直不知道什么原因导致的,后来细细阅读了下日志发现日志提示“Forbidden by robots.txt”,Scrapy 设置文件中如果把ROBO ...

  9. scrapy爬虫出现Forbidden by robots.txt

    scrapy爬虫出现Forbidden by robots.txt

随机推荐

  1. 关于Linux Mint下的pluma软件打开txt文本文件有时候乱码的解决办法

    解决方法: 1.在终端输入“dconf-editor”回车(见图2).(如果没有安装用“sudo apt-get install dconf-tools”安装.) 图2 2.展开org/gnome/g ...

  2. selenium+phantomjs报错:Unable to find a free port的分析和解决

    selenium+phantomjs报错:Unable to find a free port的分析和解决 Table of Contents 1. 现象 2. 分析 3. 解决办法 1 现象 在做项 ...

  3. idea 清屏(控制台)快捷键

    eclipse清屏快捷键为鼠标右键+R 而在idea中默认并没有清屏console的快捷键 所以需要我们自行设置: 1,ctrl+alt+s打开settings 2,找到keymap 3,搜索 cle ...

  4. 【干货】JavaScript DOM编程艺术学习笔记10-12【完】

    十.用JavaScript实现动画效果 鼠标放到链接上,每次只显示图片的一小部分,加快加载速度. js: function prepareSlideshow(){ //对象检测 if(!documen ...

  5. Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法

    我的解决办法: 1 首先设置android:layout_width=”wrap_content”和android:layout_height=”wrap_content”,否则你按比例缩放后的图片放 ...

  6. @Enable*注解的工作原理

    @EnableAspectJAutoProxy @EnableAsync @EnableScheduling @EnableWebMv @EnableConfigurationProperties @ ...

  7. Shape详解

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  8. 一篇文章读懂JSON

    什么是json? W3C JSON定义修改版: JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式,并不是 ...

  9. HDU4417 线段树 + 离线处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 , 线段树(或树状数组) + 离线处理 最近看了几道线段树的题都是需要离线处理数据的,正好这块比 ...

  10. hdu-1556 Color the ball---树状数组+区间修改单点查询

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1556 题目大意: Problem Description N个气球排成一排,从左到右依次编号为1,2 ...