先看成果再学操作!
打开咱们的Python编辑器运行代码,2秒钟就能看到控制台刷刷刷输出电影数据,最后还会生成一个整整齐齐的movies.csv文件!这种立竿见影的成就感,就是编程最爽的时刻啊朋友们!(谁试谁知道~)
环境准备三件套
- 安装Python(推荐3.8+版本)
pip install requests beautifulsoup4
(必装!)- 准备个趁手的编辑器(VS Code/PyCharm都行)
四步搞定爬虫基础版
第一步:发送HTTP请求
import requests
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
print(f'响应状态码:{response.status_code}') # 200就是成功啦!
重要的事情说三遍:加Headers!加Headers!加Headers! 很多网站会拦截没有User-Agent的请求,这个伪装浏览器的小技巧能让你成功率提升80%!
第二步:解析HTML数据
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='info')
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
print(f'电影:{title} | 评分:{rating}')
BeautifulSoup就像个智能剪刀✂️,用find()
和find_all()
就能精准剪出需要的内容。注意class后面有个下划线class_
,这是Python语法要求,不是打错了!
第三步:数据存储
import csv
with open('movies.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '短评数量'])
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
comment = movie.find('div', class_='star').find_all('span')[-1].text
writer.writerow([title, rating, comment])
生成CSV文件就像给数据安了个家🏠,用Excel就能直接打开查看。进阶玩家可以改成MySQL存储,加个INSERT INTO
语句就OK!
第四步:处理分页
for page in range(0, 250, 25):
url = f'https://movie.douban.com/top250?start={page}'
response = requests.get(url, headers=headers)
# 接上面的解析和存储代码
time.sleep(3) # 做个有道德的爬虫er~
循环10次就能抓取全部250条数据!注意time.sleep(3)
这个操作,访问太频繁可能会被网站拉黑名单哦(别问我怎么知道的)😅
新手常见问题急救包
-
报错403怎么办?
- 检查User-Agent是否有效
- 试试加个
Cookie
(浏览器按F12就能找到) - 用
requests.Session()
保持会话
-
数据抓取不全?
- 检查class名称是否写对
- 试试用
select()
代替find()
- 打印整个标签看结构
print(movie.prettify())
-
被封IP了咋整?
- 使用代理IP池(进阶玩法)
- 降低请求频率(至少3秒/次)
- 换用Selenium模拟浏览器
升级你的爬虫装备
想挑战更复杂的网站?这些技能赶紧get起来:
- 破解Ajax动态加载(需要分析XHR请求)
- 处理登录验证(Session+Cookie管理)
- 应对验证码(OCR识别或打码平台)
- 使用Scrapy框架(企业级爬虫必备)
法律红线不能碰!
- 别碰需要登录才能访问的数据
- 遵守网站的robots.txt规则
- 不要高频访问(超过5次/秒很危险)
- 数据仅用于学习,别商业倒卖!
看到这里你已经打败了全国80%的Python初学者!这个案例虽然简单,但包含了爬虫最核心的四个步骤:请求→解析→存储→翻页。下次可以试试抓取知乎热榜、天气数据,或者…你懂得(手动狗头)!
(悄悄说:下期教大家用Selenium抓动态网页,关注不迷路~)