专业编程基础技术教程

网站首页 > 基础教程 正文

爬虫必备(6)- urllib君子协议解析器

ccvgpt 2024-07-23 01:34:08 基础教程 10 ℃

俗话说,“盗亦有道”,在信息化快速普及的今天,互联网已成为人们自由获取信息的最主要的途径(前提是必须依法合规地使用)。然而,自由并非无约束,在互联网中也应受到相应规则的限制。因此在网站中使用robots 文件来限制爬虫,是众多互联网网站之间形成的一种无形契约。只要在 robots 文件中明确标示出哪些信息被禁止爬取,在进行相关操作时就应该严格遵守这些规定,这也体现了一种职业素质。

什么是 robots 协议

robots.txt文件是网站根目录下的一个纯文本文件,用于指示搜索引擎爬虫在网站上可以访问哪些内容。全名叫做网络爬虫排除标准(REP),用于规范搜索引擎爬虫的行为,也被称为爬虫协议或机器人协议。

爬虫必备(6)- urllib君子协议解析器

robots.txt文件基本内容包括User-agent,Disallow, Allow 等指令。User-agent指定了要针对哪个搜索引擎爬虫设置规则(常见爬虫名见下方表格),而Disallow则指定了哪些URL不应该被爬虫访问Allow 指定可以爬取的资源路径Disallow和Allow一般会一起使用。以下是一个 robots.txt 文件的内容,它表示允许所有类型的爬虫爬取网站,但是只允许 public 目录下的内容。

User-agent: *
Disallow: /
Allow: /public/

robots.txt文件必须放置在网站的根目录下,并且文件名也必须是robots.txt 且是大小写敏感的,所以文件名必须准确无误,否则将无法生效。

User-agent名字一般都是固定的,以下是一些搜索引擎爬虫名称:

爬虫名

网站

BaiduSpider

百度爬虫

Googlebot

谷歌爬虫

360Spider

360 爬虫

YodaoBot

有道爬虫

此外,robots.txt文件还可以包含Sitemap指令,用于指定网站地图。网站地图是一个包含网站所有URL的XML文件,有助于搜索引擎更好地了解网站的结构和内容。

需要注意的是,协议只能控制搜索引擎爬虫的行为,但无法阻止特定页面出现在搜索结果中。如果需要阻止特定页面出现在搜索结果中,应该使用<meta>标签中的noindex指令。

robotparser使用

通过使用 urllib 中的 robotparser 模块,可以实现网站 Robots 协议的分析。模块中提供了一个 RobotFileParser 的类,即可根据网站的 robots.txt 文件来判断爬虫是否可以爬取

RobotFileParser 的提供了一些常用方法,用来解析文件:

set_url: 用来设置文件路径,如果在创建 RobotFileParser 的时候已经指定了路径,那就不需要再使用这个方法了。

read: 读取 robots.txt 文件,需要注意的是此方法必须调用,才能读取文件内容,否则后续逻辑都无法使用

parse: 用于解析 robots.txt 文件。

can_fetch: 用来校验是否可以爬取某个资源的内容,也是主要的使用方法

mtime: 反回爬取和分析 robots.txt 的时间,用来检查 robots.txt 是否为最新。

modified: 用于设置爬取和分析 robot.txt 的时间。

from urllib.robotparser import RobotFileParser

# 以豆瓣
robot = RobotFileParser(url="https://www.douban.com/robots.txt")
robot.read()
print(robot.can_fetch("*","https://www.douban.com/note/809408645/?_i=4436313eedS5Vi"))

# True

上边代码中以豆瓣的robots.txt文件为例, 来查看豆瓣的资源是否可以爬取,在can_fetch方法中,接收两个参数,第一个参数User-ageng用于表示爬虫类型, 第二个参数URL表示要访问的地址,返回结果如果为True表示资源可爬取。

不遵守robots规则会怎样?

需要注意的是,虽然 robots.txt 是用来限制爬虫的抓取范围,但仅仅是一种文件上的规范。因此爬虫可能会忽略 robots.txt 的内容,继续抓取被禁止的资源。因此, robots.txt 的限制应当是一种额外措施,而不是唯一方式。

反过来讲,如果我们的内容需要搜索引擎来积极的检索,那合理的配置robots.txt反而会有助于网站的曝光(这也是SEO的一部分),错误或不合适的配置可能会导致以下问题:

1. 搜索引擎访问网站的次数减少,网站无法被有效地索引和收录。
2. 网站内容可能会被误判为垃圾内容,影响网站的排名。
3. 网站页面的抓取频率可能会降低,影响网站的更新速度。
4. 网站的搜索引擎可见度可能会降低,影响网站的流量和商业价值。

因此要结合自身网站的实际情况来设置robots.txt的内容。

#挑战30天在头条写日记#

Tags:

最近发表
标签列表