文章目录
🌟 目标:用30行代码搞定电影数据抓取!
咱们今天要做的这个案例太适合新手了!不需要复杂的环境配置,不用处理登录验证,直接上手就能看到成果(成就感爆棚有没有!)。关键还能学会三大核心技能:
- 发送HTTP请求的正确姿势
- HTML解析的魔法操作
- 数据存储的多种玩法
🛠️ 准备工作(3分钟搞定)
# 先装这两个神器(在终端运行)
pip install requests beautifulsoup4
💻 完整代码先睹为快
import requests
from bs4 import BeautifulSoup
import csv
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def get_movies(page):
url = f'https://movie.douban.com/top250?start={page*25}'
try:
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 重点来了!CSS选择器的使用(划重点!!)
items = soup.select('.grid_view li')
for item in items:
title = item.select_one('.title').text
rating = item.select_one('.rating_num').text
quote = item.select_one('.inq').text if item.select_one('.inq') else '暂无短评'
yield [title, rating, quote]
except Exception as e:
print(f'第{page+1}页抓取出错:', e)
# 数据存储三部曲(CSV格式最方便!)
with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '经典台词'])
# 循环抓取10页数据(每页25条)
for page in range(10):
for movie in get_movies(page):
writer.writerow(movie)
print('数据抓取完成!快去查看CSV文件吧~')
🔍 代码逐行解析(新手必看部分)
1. 请求头设置(超级重要!!)
headers = {'User-Agent': '...'}
这里模拟浏览器访问,很多网站会拦截没有User-Agent的请求(直接403警告!)
2. 异常处理关键点
try:
# 主要逻辑
except Exception as e:
print(...)
网络请求可能随时失败,不加异常处理程序会直接崩溃!(血泪教训)
3. CSS选择器妙用
soup.select('.grid_view li')
比正则表达式简单100倍的定位方法!Chrome开发者工具直接复制选择器超方便(F12大法好)
4. 生成器yield的巧妙之处
yield [title, rating, quote]
边解析边写入,内存占用超友好!处理大数据时这个技巧能救命(内存溢出警告!)
🚨 新手常见坑点(避雷指南)
-
被封IP怎么办?
- 加延迟:
time.sleep(3)
- 用代理IP(进阶技巧)
- 加延迟:
-
中文乱码问题
- 保存时用
utf-8-sig
编码 - 遇到gbk编码网站用
response.encoding='gbk'
- 保存时用
-
动态加载数据抓不到?
- 可能需要用Selenium(后续教程会讲)
- 或者找接口直接请求JSON数据
📈 数据可视化彩蛋
拿到数据后可以用pandas快速分析:
import pandas as pd
df = pd.read_csv('douban_top250.csv')
print(df.describe()) # 查看统计信息
print(df.sort_values('评分', ascending=False).head(10)) # 评分TOP10
⚠️ 法律红线不能碰!
- 绝不爬取个人隐私数据
- 遵守网站的robots.txt规则
- 控制请求频率(别把人家服务器搞崩了!)
- 商用前务必获得授权
🚀 下一步学习路线
想进阶的童鞋可以研究:
- Scrapy框架(工业级爬虫必备)
- Selenium自动化测试工具
- 反反爬策略(验证码识别、IP代理池)
- 分布式爬虫架构
实战建议:马上动手运行代码!遇到报错正是学习的好机会(别直接复制粘贴!)。爬虫最核心的不是代码,而是对网页结构的分析能力,多按F12看看网页源码,你会打开新世界的大门!