3、网络爬虫入门:爬虫的概念与分类、爬虫的工作流程、爬虫的合法性与道德规范、Robots协议解读
好,咱们正式开始聊爬虫。
说实话,每次带新人入门,我第一个讲的就是这章。为什么?因为很多人一听到「爬虫」,脑子里就浮现出黑客、黑产、偷偷摸摸抓数据。其实不是这样的。爬虫本身是个工具,就像一把菜刀,你可以用来切菜,也可以用来……嗯,你懂的。
我个人习惯,在讲任何技术之前,先搞清楚「它是什么」、「它能干什么」、「什么不能干」。这章咱们就把爬虫的底裤扒干净。
3.1 爬虫的概念与分类
先给个定义。
网络爬虫,也叫网络蜘蛛、网络机器人。说白了,就是一个自动化的程序,按照一定的规则,在互联网上抓取信息。
你手动打开浏览器,看到一篇好文章,复制粘贴到本地——这就是手动爬虫。而写个程序让它自动干这事,就是自动化爬虫。
我在项目中遇到过最夸张的一个需求:客户要抓某个电商平台的全部商品数据,每天更新一次。手动?不现实。这时候爬虫就派上用场了。
爬虫按用途和复杂度,大致分这么几类:
| 分类 | 特点 | 典型应用 |
|---|---|---|
| 通用爬虫 | 抓取整个互联网,数据量大 | Google、百度搜索引擎 |
| 聚焦爬虫 | 只抓特定主题或领域 | 新闻聚合、价格监控 |
| 增量爬虫 | 只抓新增或更新的内容 | 社交平台动态监控 |
| 深层爬虫 | 抓取需要登录或表单提交的内容 | 爬取需要搜索的数据库 |
你想想看,咱们这门课要做的是搜索引擎,所以核心是通用爬虫。但实际开发中,我会让你先从小规模的聚焦爬虫练手。为什么?因为通用爬虫要考虑的东西太多了——去重、调度、分布式、带宽控制……一口吃不成胖子。
3.2 爬虫的工作流程
爬虫到底是怎么工作的?
其实流程不复杂。我画个简单的步骤给你看:
- 获取初始URL——爬虫的起点,比如首页地址
- 发送HTTP请求——向服务器要数据
- 解析响应内容——把HTML、JSON等格式的数据提取出来
- 提取目标数据——找到你真正想要的信息
- 发现新URL——从当前页面里找到新的链接,加入待抓取队列
- 存储数据——保存到数据库或文件
- 重复步骤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、个人信息保护法等有严格规定
- 是否造成服务器过载——爬取频率过高,可能构成破坏计算机信息系统罪
说白了,你爬公开的、非商业的、不涉及隐私的数据,一般问题不大。但你要是爬用户信息、付费内容、商业机密……那性质就变了。
道德规范方面,我个人的原则很简单:
- 控制频率——别把人家服务器当自家后花园,每秒请求别太频繁
- 标识身份——在User-Agent里写明你的爬虫身份和联系方式
- 尊重数据——不要篡改、不要滥用、不要二次出售
- 遵守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协议是君子协定,建议遵守
下一章,咱们开始动手写第一个爬虫。到时候我会带你一步步搭建环境、写代码、跑起来。准备好了吗?