1 兴趣引入
本文旨在帮助初学者理解网络爬虫的基本概念、工作原理及核心实现步骤。通过本教程,读者将掌握使用 Python 进行数据抓取的基础能力。
爬虫(Web Crawler),从本质上来说,就是利用程序在互联网上自动获取对我们有价值的数据的技术。
2 基本原理
2.1 浏览器工作原理
当用户访问网页时,浏览器的工作流程如下:
- 解析数据:服务器响应数据后,浏览器需将计算机语言编写的代码翻译成人类可读的内容;
- 提取数据:用户在页面上挑选出有用的信息;
- 存储数据:将挑选出的有用数据保存在本地文件或数据库中。

2.2 爬虫工作原理
爬虫模拟了浏览器的行为,其核心流程包括:
- 获取数据:根据提供的网址向服务器发起请求,接收返回的数据;
- 解析数据:将服务器返回的原始数据(如 HTML)解析成结构化的格式;
- 提取数据:从中筛选并提取出目标字段;
- 储存数据:将处理后的数据保存,便于后续分析或使用。

3 爬虫核心步骤
3.1 环境准备
3.1.1 安装 requests 库
requests 是 Python 中最流行的 HTTP 客户端库。安装方法如下:
- Mac/Linux:在终端输入
pip3 install requests - Windows:在命令提示符(cmd)输入
pip install requests
提示:安装其他第三方库时通常遵循相同模式,即
pip install 模块名。
3.1.2 requests 库作用
该库可以帮我们下载网页源代码、文本、图片,甚至是音频和视频资源。其本质是向服务器发送请求并得到响应。
3.1.3 基础使用示例
import requests
# 发送 GET 请求
res = requests.get('https://www.example.com')
requests.get() 调用库中的 get() 方法,括号内的参数是目标网址。服务器响应结果赋值给变量 res。

3.2 Response 对象的常用属性
请求成功后,返回的 Response 对象包含多个重要属性:

3.2.1 response.status_code
打印响应状态码,用于检查请求是否成功。常见的状态码包括:
200:请求成功404:资源未找到500:服务器内部错误
print(res.status_code) # 输出 200

3.2.2 response.content
以二进制数据形式返回内容,适用于图片、音频、视频的下载。
3.2.3 response.text
以字符串形式返回内容,适用于文字、网页源代码的下载。
3.2.4 response.encoding
定义 Response 对象的编码方式。遇到乱码问题时,可手动设置编码。
res.encoding = 'utf-8'
3.3 进阶实践
3.3.1 设置请求头
许多网站会检测 User-Agent,伪装成浏览器以避免被拦截。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
res = requests.get('https://www.example.com', headers=headers)
3.3.2 异常处理
网络请求可能因超时或连接失败而中断,应添加异常捕获机制。
try:
res = requests.get('https://www.example.com', timeout=5)
res.raise_for_status()
except Exception as e:
print(f"请求失败:{e}")
3.3.3 数据解析
获取源码后,通常需要使用解析库提取数据。例如使用 BeautifulSoup 或正则表达式。
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text, 'html.parser')
title = soup.find('h1').text
print(title)
4 爬虫伦理与规范
4.1 Robots 协议
Robots 协议是互联网爬虫的一项公认道德规范,全称'网络爬虫排除标准'(Robots exclusion protocol)。它用来告诉爬虫哪些页面是可以抓取的,哪些不可以。
4.2 协议查看
- 在网站的域名后加上
/robots.txt即可查看。例如:https://www.taobao.com/robots.txt - 协议里最常出现的英文指令是
Allow和Disallow。Allow:代表可以被访问Disallow:代表禁止被访问
4.3 爬取建议
- 控制频率:避免在短时间内发送过多请求,防止对目标服务器造成压力。
- 遵守规则:尊重
robots.txt协议,不抓取受保护的数据。 - 合法合规:确保数据采集用途符合法律法规,不侵犯个人隐私或商业机密。
5 总结
学习 Python 爬虫需要掌握 HTTP 协议基础、Requests 库的使用以及数据解析技巧。除了技术实现外,还需严格遵守网络伦理和法律规范。通过不断实践,可以逐步构建起高效、稳定的数据采集系统。

