Python爬虫实战入门:手把手教你爬取豆瓣电影Top250(2024最新版)
一、环境准备与工具选择(小白必看!!!)
工欲善其事必先利其器,咱们先准备好这些装备:
1. Python 3.8+(推荐用最新版)
2. Requests库(网络请求神器)
3. BeautifulSoup4(HTML解析利器)
4. Pandas(数据处理专家)
安装命令看这里(命令行输入):
bash
pip install requests beautifulsoup4 pandas
(超级重要)强烈建议使用虚拟环境!避免包冲突的万能法门:
bash
python -m venv spider_env
source spider_env/bin/activate # Linux/Mac
spider_env\Scripts\activate.bat # Windows
二、基础爬虫实战:豆瓣电影Top250
2.1 目标分析
咱们要爬取这些关键数据:
- 电影名称
- 评分
- 短评数量
- 经典台词
- 上映年份
打开豆瓣电影Top250页面(https://movie.douban.com/top250),按F12打开开发者工具,重点观察:
1. 页面结构(HTML标签层级)
2. 请求头信息(User-Agent必看)
3. 分页规律(start参数是关键)
2.2 编写第一个爬虫脚本
```python
import requests
from bs4 import BeautifulSoup
伪装成浏览器访问(必加!)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def get_movie_info(url):
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
爬取前10页数据
all_movies = []
for page in range(0, 250, 25):
url = f'https://movie.douban.com/top250?start={page}'
all_movies.extend(get_movie_info(url))
print(f'共爬取到{len(all_movies)}条数据!')
```
2.3 数据存储与导出
用Pandas保存为Excel和CSV双格式(防止文件损坏):
```python
import pandas as pd
df = pd.DataFrame(all_movies,
columns=['电影名称', '评分', '评论数', '经典台词', '上映年份'])
去重处理(重要!)
df = df.drop_duplicates()
保存数据
df.to_excel('douban_top250.xlsx', index=False)
df.to_csv('douban_top250.csv', encoding='utf_8_sig', index=False)
```
三、反爬突破实战技巧(2024最新版)
3.1 请求头伪装大全
python
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Referer': 'https://www.douban.com/',
'Cookie': '你的实际cookie' # 需要时再添加
}
3.2 IP代理池配置
推荐使用付费代理服务(免费代理99%不可用):
```python
proxies = {
'http': 'http://user:password@ip:port',
'https': 'http://user:password@ip:port'
}
response = requests.get(url, headers=headers, proxies=proxies)
```
3.3 随机延时设置
```python
import random
import time
随机等待1-3秒
time.sleep(random.uniform(1, 3))
```
四、新手常见坑点汇总(血泪教训)
4.1 编码问题(乱码杀手)
```python
强制指定编码
response.encoding = 'utf-8'
```
4.2 动态加载数据(AJAX请求)
用浏览器开发者工具抓取XHR请求,比如:
python
ajax_url = 'https://movie.douban.com/j/chart/top_list'
params = {
'type': '24',
'interval_id': '100:90',
'start': '0',
'limit': '20'
}
4.3 登录验证破解
推荐使用session保持登录状态:
python
session = requests.Session()
login_data = {
'username': '你的账号',
'password': '你的密码'
}
session.post(login_url, data=login_data)
五、爬虫进阶路线图(从入门到精通)
- 掌握Scrapy框架(企业级项目必备)
- 学习Selenium自动化(动态网页克星)
- 了解分布式爬虫(Scrapy-Redis)
- 研究反爬机制(验证码识别、指纹检测)
- 学习数据清洗(Pandas高级用法)
- 掌握数据可视化(Matplotlib/PyEcharts)
六、法律与道德红线(必读!!!)
- 严格遵守网站的robots.txt协议
- 控制请求频率(建议≥3秒/次)
- 不爬取用户隐私数据
- 禁止商业倒卖数据
- 及时删除敏感信息
(超级重要)推荐使用公开API:
```python
豆瓣官方API示例
api_url = 'https://api.douban.com/v2/movie/top250'
```
七、实战项目推荐(简历加分项)
- 招聘网站职位分析
- 电商平台价格监控
- 社交媒体舆情分析
- 股票基金数据抓取
- 学术论文爬虫系统
下次想学什么?留言告诉我!准备出续集:
- 《Scrapy框架从入门到放弃》
- 《动态渲染网页破解大全》
- 《分布式爬虫架构指南》
浙公网安备 33010602011771号