3、网络爬虫入门:爬虫的概念与分类、爬虫的工作流程、爬虫的合法性与道德规范、Robots协议解读

好,咱们正式开始聊爬虫。

说实话,每次带新人入门,我第一个讲的就是这章。为什么?因为很多人一听到「爬虫」,脑子里就浮现出黑客、黑产、偷偷摸摸抓数据。其实不是这样的。爬虫本身是个工具,就像一把菜刀,你可以用来切菜,也可以用来……嗯,你懂的。

我个人习惯,在讲任何技术之前,先搞清楚「它是什么」、「它能干什么」、「什么不能干」。这章咱们就把爬虫的底裤扒干净。

3.1 爬虫的概念与分类

先给个定义。

网络爬虫,也叫网络蜘蛛、网络机器人。说白了,就是一个自动化的程序,按照一定的规则,在互联网上抓取信息。

你手动打开浏览器,看到一篇好文章,复制粘贴到本地——这就是手动爬虫。而写个程序让它自动干这事,就是自动化爬虫。

我在项目中遇到过最夸张的一个需求:客户要抓某个电商平台的全部商品数据,每天更新一次。手动?不现实。这时候爬虫就派上用场了。

爬虫按用途和复杂度,大致分这么几类:

分类 特点 典型应用
通用爬虫 抓取整个互联网,数据量大 Google、百度搜索引擎
聚焦爬虫 只抓特定主题或领域 新闻聚合、价格监控
增量爬虫 只抓新增或更新的内容 社交平台动态监控
深层爬虫 抓取需要登录或表单提交的内容 爬取需要搜索的数据库

你想想看,咱们这门课要做的是搜索引擎,所以核心是通用爬虫。但实际开发中,我会让你先从小规模的聚焦爬虫练手。为什么?因为通用爬虫要考虑的东西太多了——去重、调度、分布式、带宽控制……一口吃不成胖子。

我的建议:初学者先别碰通用爬虫。找个目标网站,比如一个新闻站,写个聚焦爬虫把它的文章标题和正文抓下来。成就感来得快,也容易发现问题。

3.2 爬虫的工作流程

爬虫到底是怎么工作的?

其实流程不复杂。我画个简单的步骤给你看:

  1. 获取初始URL——爬虫的起点,比如首页地址
  2. 发送HTTP请求——向服务器要数据
  3. 解析响应内容——把HTML、JSON等格式的数据提取出来
  4. 提取目标数据——找到你真正想要的信息
  5. 发现新URL——从当前页面里找到新的链接,加入待抓取队列
  6. 存储数据——保存到数据库或文件
  7. 重复步骤2-6——直到没有新URL或达到停止条件

嗯,这里要注意:步骤5是关键。爬虫之所以能「爬」,就是因为能从一个页面发现新的链接,然后继续抓。这就像你在一个迷宫里,每到一个房间就找到新的门,然后继续走。

给你看个最简单的爬虫代码,感受一下:

import requests
from bs4 import BeautifulSoup

# 1. 获取初始URL
url = "https://example.com/news"

# 2. 发送请求
response = requests.get(url)

# 3. 解析内容
soup = BeautifulSoup(response.text, 'html.parser')

# 4. 提取数据
titles = soup.find_all('h2', class_='news-title')
for title in titles:
    print(title.text.strip())

# 5. 发现新URL
links = soup.find_all('a')
for link in links:
    new_url = link.get('href')
    # 加入队列,继续抓取
    print(f"发现新链接: {new_url}")

这段代码虽然简单,但核心流程都有了。我在早期做爬虫项目时,就是靠这个模板起步的。后来慢慢加上了请求头伪装、代理IP、异常重试……但骨架没变。

核心要点:爬虫的本质就是一个「请求-解析-提取-发现」的循环。理解了这个循环,你就掌握了爬虫的命脉。

3.3 爬虫的合法性与道德规范

好,聊点严肃的。

我曾经见过一个团队,爬虫写得贼溜,结果被对方公司告了,赔了几十万。为什么?因为他们爬了不该爬的数据,而且爬得太狠,把人家服务器搞崩了。

所以,这一节我建议你认真看。技术学得再好,法律红线不能碰。

爬虫的合法性,主要看这几点:

  • 是否违反网站的使用条款——很多网站明确禁止爬虫
  • 是否侵犯著作权——爬取的内容受版权保护吗?
  • 是否构成不正当竞争——比如爬取竞争对手的核心数据
  • 是否涉及个人信息——GDPR、个人信息保护法等有严格规定
  • 是否造成服务器过载——爬取频率过高,可能构成破坏计算机信息系统罪

说白了,你爬公开的、非商业的、不涉及隐私的数据,一般问题不大。但你要是爬用户信息、付费内容、商业机密……那性质就变了。

警告:不要以为「数据在网上公开就能随便爬」。法律不是这么判的。我建议你在写爬虫之前,先问自己三个问题:1) 这个数据我有没有权利拿?2) 拿了之后怎么用?3) 会不会伤害到别人?三个问题都过了,再动手。

道德规范方面,我个人的原则很简单:

  1. 控制频率——别把人家服务器当自家后花园,每秒请求别太频繁
  2. 标识身份——在User-Agent里写明你的爬虫身份和联系方式
  3. 尊重数据——不要篡改、不要滥用、不要二次出售
  4. 遵守Robots协议——这个下面详细说

3.4 Robots协议解读

Robots协议,全称是「Robots Exclusion Protocol」。它不是法律,而是一种君子协定。

你想想看,网站管理员在服务器上放一个 robots.txt 文件,告诉爬虫:「哪些地方你可以去,哪些地方你不能去」。好的爬虫会遵守,坏的爬虫……嗯,无视它。

一个典型的 robots.txt 长这样:

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

Sitemap: https://example.com/sitemap.xml

解读一下:

  • User-agent: * —— 适用于所有爬虫
  • Disallow: /admin/ —— 禁止爬取 /admin/ 目录下的内容
  • Disallow: /private/ —— 禁止爬取 /private/ 目录
  • Allow: /public/ —— 允许爬取 /public/ 目录(覆盖上面的规则)
  • Sitemap —— 告诉爬虫网站地图在哪,方便发现所有页面

我在做搜索引擎爬虫时,第一步就是读取目标网站的 robots.txt。为什么?因为这是最基本的尊重。而且,有些网站会在 robots.txt 里暴露一些路径,比如 /sitemap.xml,这对爬虫来说简直是宝藏。

一个小技巧:你可以直接在浏览器里输入 https://目标网站/robots.txt 来查看。比如 https://www.baidu.com/robots.txt。看看百度允许什么、禁止什么,挺有意思的。

但记住,Robots协议是自愿遵守的。有些爬虫根本不看这个文件。不过,如果你要做正规的搜索引擎,我建议你遵守。这不仅是技术问题,更是态度问题。

好,这章的内容就这些。总结一下:

  • 爬虫是自动化抓取工具,分通用、聚焦、增量、深层等类型
  • 工作流程就是「请求-解析-提取-发现」的循环
  • 合法性很重要,别踩红线
  • Robots协议是君子协定,建议遵守

下一章,咱们开始动手写第一个爬虫。到时候我会带你一步步搭建环境、写代码、跑起来。准备好了吗?