Python 爬虫实战入门:请求、解析与存储
Python 做爬虫,门槛不高,真正容易卡住的反而是细节:请求头怎么写、页面是静态还是动态、拿到数据以后往哪放。先把这三件事弄明白,后面再谈代理、重试、验证码,思路会顺很多。
准备工作
动手之前,最好已经会一点 Python 基础,也知道 HTTP 请求、状态码、HTML 结构这些常见概念。爬虫并不神秘,本质上就是发请求、拿响应、解析页面、保存结果。
环境搭建
建议先装 Python 3.x,再用虚拟环境把依赖隔离开。venv 和 conda 都行,选你平时最顺手的。
python -m venv crawler_env
source crawler_env/bin/activate # Windows: crawler_env\Scripts\activate
安装必要库
最常用的一组库是 requests、beautifulsoup4、selenium 和 lxml。
pip install requests beautifulsoup4 selenium lxml
写一个最小可用爬虫
先别急着上复杂框架,直接拿一个页面试手最稳。requests 负责发起 HTTP 请求,BeautifulSoup 负责把 HTML 拆开看。
发送 HTTP 请求
很多站点会简单判断请求是不是浏览器发来的,所以一般会带上 User-Agent。这不是万能钥匙,但能避开一部分很粗糙的拦截。
import requests
from bs4 import BeautifulSoup
url = 'http://example.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
try:
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status() # 如果状态码不是 200,则抛出异常
response.encoding = response.apparent_encoding # 自动识别编码
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.string if soup.title else 'No Title'
print(f"网页标题:{title}")
except Exception as e:
print()


