深入解析豆瓣电影Top250爬虫:从基础到进阶的全方位指南
引言:网络爬虫的魅力与价值
在数据驱动的时代,网络爬虫已成为获取公开数据的重要工具。本文将深入剖析一个简单的豆瓣电影Top250爬虫代码,通过这个实例,带您领略网络爬虫的核心概念、技术细节以及最佳实践。无论您是Python初学者还是有一定经验的开发者,都能从中获得有价值的知识点。
完整可运行代码:
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 Edg/131.0.0.0"
}
for start_num in range(0,250,25):
#print(start_num)
response = requests.get(f"https://movie.douban.com/top250?start={start_num}&filter=", headers=headers)
html = response.text
# print(html)
soup = BeautifulSoup(html, "html.parser")
# print(soup)
all_titles = soup.find_all("span", attrs={"class": "title"})
for title in all_titles:
title_string = title.string
if "/" not in title_string:
print(title_string)
1. 依赖库导入
import requests
from bs4 import BeautifulSoup
- requests库:Python中最流行的HTTP客户端库,用于发送HTTP/1.1请求,比urllib更简洁易用
- BeautifulSoup (bs4):强大的HTML/XML解析库,可以从HTML或XML文件中提取数据
2. 请求头设置
headers = {
"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 Edg/131.0.0.0"
}
- User-Agent:HTTP请求头字段,用于标识客户端类型。网站常根据此字段提供不同内容或限制爬虫
- 模拟移动设备访问,降低被识别为爬虫的风险
- 实践中可轮换多个User-Agent,增强爬虫鲁棒性
3. 分页爬取策略
for start_num in range(0,250,25):
- 豆瓣Top250每页显示25部电影,共10页
- range(0,250,25)生成序列[0, 25, 50, …, 225]
- 这是分页爬取的常用技巧:通过URL参数控制分页
4. 发送HTTP请求
response = requests.get(f"https://movie.douban.com/top250?start={start_num}&filter=", headers=headers)
html = response.text
- 使用GET方法请求URL
- f-string格式化字符串,动态插入分页参数
- response.text获取响应的文本内容(自动解码)
- 更精确的做法是检查响应状态:response.raise_for_status()
5. HTML解析与数据提取
soup = BeautifulSoup(html, "html.parser")
all_titles = soup.find_all("span", attrs={"class": "title"})
- 使用BeautifulSoup解析HTML文档
- "html.parser"是Python内置的HTML解析器,速度快但容错性不如lxml
- find_all()方法查找所有匹配的元素
- 通过class属性精准定位所需元素
6. 数据清洗与过滤
for title in all_titles:
title_string = title.string
if "/" not in title_string:
print(title_string)
- 过滤掉包含"/"的标题(通常为外文译名)
- title.string获取标签内的文本内容
- 简单但有效的数据清洗策略
7. 尊重网站爬虫规则
- 数据用途:爬取的数据仅用于个人学习,不可商用或大规模分发
- 请求频率:控制请求速度,避免对目标服务器造成过大压力
- 用户协议:阅读并遵守网站的使用条款




