Python爬虫实战入门:从零开始抓取网页数据(手把手教学)
一、环境准备(小白友好版)
老铁们!咱们直接从最基础的开始整!不需要任何编程基础,跟着步骤走就完事了~
- 安装Python 3.6+(官网下载安装时一定记得勾选Add to PATH!!!)
- 按Win+R输入cmd打开小黑窗,逐行敲入:
bash
pip install requests
pip install beautifulsoup4
pip install lxml
(这三个库是爬虫界的"黄金三件套",缺一不可!)
二、第一个实战案例:抓取豆瓣电影Top250
咱们直接上硬菜!先看效果再解释原理(学习效率翻倍!)
```python
import requests
from bs4 import BeautifulSoup
import csv
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)
soup = BeautifulSoup(response.text, 'lxml')
提取电影数据(关键步骤!)
movies = []
for item in soup.select('.item'):
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 '暂无短评'
movies.append([title, rating, quote])
保存数据到CSV(办公党最爱)
with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '经典台词'])
writer.writerows(movies)
print('数据抓取完成!快去查看douban_top250.csv文件吧~')
```
三、代码逐行解析(重点部分)
1. 请求头设置(超级重要!)
很多网站会拦截没有浏览器标识的请求!User-Agent伪装成Chrome浏览器访问,实测有效率提升80%!
2. CSS选择器妙用
soup.select('.item')这行代码用的是CSS选择器语法:
- .item 表示class为item的元素
- select_one用于获取单个元素
(比正则表达式简单100倍有没有!)
3. 异常处理技巧
quote = ... if ... else ... 这个三元表达式是防止有些电影没有短评时报错,新手建议每个字段都加这个判断!
四、进阶技巧(职场人必看)
1. 突破反爬限制
- 随机延迟:在循环里加time.sleep(random.randint(1,3))
- 使用代理IP池(某宝有卖,自己搭建也不难)
- 更换User-Agent:准备个UA列表随机切换
2. 数据存储方案
| 存储方式 | 适用场景 | 推荐库 |
|---------|---------|--------|
| CSV | 快速查看 | csv |
| Excel | 报表需求 | openpyxl|
| 数据库 | 大数据量 | pymysql |
(个人建议先用CSV练手,熟练了再上数据库)
五、常见坑点预警!!!
- 被封IP怎么办?
- 立即停止爬取!
- 检查是否触发了反爬机制
使用代理IP(重要的事情说三遍)
中文乱码问题
在请求后加.encoding = 'utf-8',如果还乱码可以试试gbk或者gb2312
动态加载数据
遇到页面数据通过Ajax加载的情况,直接上Selenium或Pyppeteer(这个后面可以单独讲一期)
使用代理IP(重要的事情说三遍)
中文乱码问题
在请求后加.encoding = 'utf-8',如果还乱码可以试试gbk或者gb2312
动态加载数据
遇到页面数据通过Ajax加载的情况,直接上Selenium或Pyppeteer(这个后面可以单独讲一期)
六、法律红线(必看!)
- 不要爬取个人隐私数据
- 遵守网站的robots.txt协议
- 控制访问频率(别把人家服务器搞崩了)
- 商用数据务必获得授权
七、下一步学习路径
- 掌握XPath语法(比CSS选择器更强大)
- 学习Scrapy框架(企业级爬虫开发)
- 了解分布式爬虫(提升采集效率)
- 研究反反爬策略(道高一尺魔高一丈)
(悄悄说:爬虫工程师月薪25K+很常见哦~)
实战总结
爬虫的核心逻辑其实就是:
发送请求 → 解析数据 → 存储数据 → 循环操作
只要掌握了这个基本套路,配合今天教的requests+BeautifulSoup组合拳,80%的静态网页数据都能轻松拿下!建议新手多找几个不同结构的网站练手,遇到问题多查官方文档(requests和bs4的文档写得超友好!)
最后送大家一句话:爬虫不是法外之地,技术要用在正道上!下期咱们讲如何用Selenium搞定动态网页,点赞过100马上更新~
浙公网安备 33010602011771号