文章目录
一、为什么要学爬虫?(这不是废话吗)
各位爬虫萌新注意了(敲黑板)!!!在这个数据为王的时代,不会爬虫的程序员就像没有渔网的渔夫。举个栗子:你想分析电影评分规律?想追踪商品价格波动?这些都需要数据支撑!而爬虫就是获取这些数据的"金手指"!
二、准备工作(三件套不能少)
1. 环境配置(超简单版)
# 安装第三方库(用清华镜像飞快)
pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 新手必备工具
- Chrome浏览器(F12开发者工具)
- 文本编辑器(推荐VSCode)
- 一杯枸杞茶(别问为什么)
3. 法律须知(超级重要)
- 遵守robots.txt协议
- 禁止高频访问(会被封IP!)
- 只采集公开数据
三、实战:抓取豆瓣电影Top250
1. 分析网页结构(关键步骤)
打开豆瓣电影Top250页面,按F12打开开发者工具:
- 每页显示25部电影
- 分页参数是
start=0/25/50...
- 电影信息在
class="info"
的div里
2. 完整代码(可直接运行)
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_movie_info(url):
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
movies = []
for item in soup.find_all('div', class_='info'):
title = item.find('span', class_='title').text
rating = item.find('span', class_='rating_num').text
quote = item.find('span', class_='inq').text if item.find('span', class_='inq') else '无'
movies.append([title, rating, quote])
return movies
def main():
base_url = 'https://movie.douban.com/top250?start='
all_movies = []
# 循环抓取10页数据(新手别贪多!)
for i in range(0, 250, 25):
url = base_url + str(i)
print(f'正在抓取:{url}')
all_movies.extend(get_movie_info(url))
# 保存到CSV文件
with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '短评'])
writer.writerows(all_movies)
print('数据抓取完成!快去查看CSV文件吧~')
if __name__ == '__main__':
main()
3. 代码解析(重点看这里!)
- User-Agent伪装:模拟浏览器访问,避免被反爬
- BeautifulSoup解析:用
.find()
和.find_all()
定位元素 - 异常处理:短评字段做了空值判断
- 分页逻辑:通过修改start参数实现翻页
- 数据存储:使用csv模块保存结构化数据
四、常见坑点(血泪经验)
-
被封IP怎么办?
- 使用代理IP(新手推荐免费:https://www.kuaidaili.com/free/)
- 降低请求频率(加time.sleep(2))
-
中文乱码问题
- 保存文件时使用
encoding='utf-8-sig'
- 遇到gbk编码网站用
response.encoding = 'gbk'
- 保存文件时使用
-
动态加载数据
- 使用Selenium(适合JavaScript渲染的页面)
- 分析XHR请求(进阶技巧)
五、扩展练习(检验学习成果)
- 增加导演/主演信息提取
- 实现自动翻页(不用手动设置页数)
- 把数据存入MySQL数据库
- 添加异常重试机制(requests的retry库)
六、下一步学什么?(路线图)
- Scrapy框架 → 大型项目必备
- 反爬应对策略 → 验证码识别/IP代理池
- 数据清洗 → Pandas处理
- 可视化分析 → Matplotlib/Pyecharts
七、特别提醒(保命指南)
- 不要爬取敏感数据(你懂的)
- 商业用途需授权
- 控制爬取速度(建议≥3秒/次)
(实测抓取)最后说句掏心窝的话:爬虫的核心不是代码多牛逼,而是对目标网站的分析能力!多练手才是王道,赶紧拿豆瓣这个例子去实操吧~遇到问题欢迎评论区交流!(但别问我怎么破解付费内容啊喂)