一、什么是 robots.txt?

robots.txt 是做爬虫时一个非常重要但经常被误解的机制robots.txt 是网站根目录下的一个爬虫协议文件,例如:

https://example.com/robots.txt

它遵循的是 Robots Exclusion Protocol(爬虫排除协议)。网站告诉爬虫:哪些可以爬,哪些不希望你爬。

二、它有什么用?

核心作用有 3 个:

控制爬虫访问范围

比如:

User-agent: *
Disallow: /admin/

意思是:

  • 所有爬虫(*

  • 不允许访问 /admin/

保护敏感路径(但不是安全机制!)

例如:

  • /login

  • /private

  • /api/internal

    注意:

robots.txt 不能防止恶意访问,只是“君子协议”

优化网站资源

避免爬虫抓取:

  • 重复页面

  • 搜索结果页

  • 无意义参数页


三、robots.txt 怎么用

你写爬虫时,基本流程应该是:

Step 1:先读取 robots.txt

import requests
​
url = "https://example.com/robots.txt"
print(requests.get(url).text)

Step 2:解析规则

常见字段:

字段 含义
User-agent 针对哪个爬虫
Disallow 不允许访问
Allow 允许访问
Crawl-delay 抓取间隔

Step 3:判断是否允许抓取

Python 有现成工具:

from urllib.robotparser import RobotFileParser
​
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
​
print(rp.can_fetch("*", "https://example.com/page"))

四、做爬虫必须遵守吗?

技术层面: 不强制

robots.txt:

  • 不加密

  • 不拦截

  • 不验证

你完全可以无视继续爬

法律 & 合规层面: 强烈建议遵守

很多国家/地区(包括日本):

  • 大规模违反 robots.txt 抓取

  • 可能涉及:

    • 服务滥用

    • 数据侵权

    • 不正当竞争

行业规范:应该遵守

像这些公司都会遵守:

  • Google

  • Bing

如果你做的是:

  • 商业爬虫

  • 数据产品

  • AI训练数据

必须遵守,否则有风险

五、哪些网站是开放的?哪些不是?

这里没有“官方名单”,但可以用规则判断:

一般“开放”的网站

特点:

robots.txt 允许

User-agent: *
Allow: /

内容本身就是公开数据

例如:

  • Wikipedia(完全开放)

  • 政府数据网站

  • 开放API平台

半开放(需谨慎)

特点:

  • 允许部分抓取

  • 限制频率

  • 禁止某些路径

例如:

  • 电商网站(商品页 OK,后台 NO)

  • 新闻网站(列表 OK,评论区 NO)

不开放 / 严格限制

特点:

Disallow: /

或:

  • 强登录

  • 反爬严格(验证码、IP封禁)

  • 明确写禁止抓取

例如:

  • 社交平台(如 Facebook)

  • 金融/支付网站

  • 企业内部系统

六、做爬虫的正确姿势(非常重要)

1. 一定先看 robots.txt

这是最基本的“礼貌”

2. 控制抓取频率

time.sleep(1)

避免:

  • 压垮服务器

  • 被封 IP

3. 设置 User-Agent

headers = {
    "User-Agent": "MyCrawler/1.0"
}

4. 优先使用 API

如果网站提供 API: 不要爬 HTML

5. 避免敏感数据

不要抓:

  • 用户隐私

  • 登录信息

  • 内部接口

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐