爬虫简介
网络爬虫(Web Crawler)是通过程序模拟浏览器行为,自动从互联网抓取数据的工具。Python 因其丰富的生态(requests、BeautifulSoup、Scrapy 等)成为爬虫开发的首选语言。
什么是爬虫
浏览器访问网页的本质是向服务器发起 HTTP 请求,获取 HTML/JSON 响应后渲染展示。爬虫就是用程序复现这个过程:
- 发起 HTTP 请求(模拟浏览器)
- 获取响应内容(HTML、JSON、图片等)
- 解析内容,提取目标数据
- 存储数据(文件、数据库等)
爬虫的分类
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 通用爬虫 | 爬取整张页面的全部内容 | 搜索引擎索引(Googlebot 等) |
| 聚焦爬虫 | 只提取页面中指定的局部数据 | 价格监控、新闻采集 |
| 增量式爬虫 | 只爬取网站新增或更新的数据 | 新闻资讯、电商动态 |
| 分布式爬虫 | 多台机器协同,海量数据并行爬取 | 大规模数据采集(Scrapy-Redis) |
聚焦爬虫通常建立在通用爬虫之上:先获取完整页面,再从中提取需要的字段。
爬虫的合法性
使用爬虫需要注意以下原则:
- 遵守 robots.txt:检查目标网站根目录的
robots.txt文件,了解哪些路径禁止爬取。 - 不影响正常服务:控制请求频率,避免对服务器造成过大压力(类 DDoS 行为违法)。
- 数据合规使用:不爬取、传播侵权内容(用户隐私、版权内容等)。
- 商业用途需授权:将爬取数据用于商业目的,应事先获得网站授权。
爬虫程序若导致对方服务器无法正常提供服务,或爬取涉及个人隐私、商业机密的数据,可能触犯《网络安全法》《数据安全法》等法规。
反爬与反反爬
网站通常会设置反爬机制来阻止爬虫,而爬虫则需要对应的反反爬策略:
| 反爬手段 | 说明 | 应对策略 |
|---|---|---|
| User-Agent 检测 | 识别非浏览器请求头 | 伪造 User-Agent |
| IP 限速 / 封禁 | 限制单 IP 请求频率 | 随机延时 + 代理 IP 池 |
| Cookie / Session | 需要登录态 | 模拟登录,维护 Session |
| 验证码 | 人机识别 | 打码平台 / AI 识别 |
| JS 渲染 | 数据由 JS 动态生成 | Selenium / Playwright |
| 数据加密 | 接口参数签名 | 逆向分析加密算法 |
典型工作流
import requests
from bs4 import BeautifulSoup
url = "https://books.toscrape.com/"
headers = {"User-Agent": "Mozilla/5.0 (compatible; MyBot/1.0)"}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, "html.parser")
for article in soup.select("article.product_pod"):
title = article.h3.a["title"]
price = article.select_one(".price_color").text
print(f"{title}: {price}")这个示例展示了爬虫的基本三步:请求 → 解析 → 提取。后续章节将分别深入讲解各个环节。
最后更新于