文章目录
哈喽大家好!今天咱们来点刺激的——用Python写个真正的爬虫程序!(文末有新手大礼包🎁)作为一个爬了上百个网站的老司机,我必须说:爬虫可比谈恋爱简单多了!只要找对方法,分分钟就能把网页数据"撩"到手~
不过先打个预防针(超级重要⚠️):爬虫千万条,守法第一条! 一定要遵守网站的robots.txt协议,别给人家服务器添堵哦~
一、🔥 准备工作(别跳过!)
工欲善其事,必先利其器。咱们先把装备配齐:
# 安装必备库(在终端运行)
pip install requests beautifulsoup4
推荐使用 VS Code 或 PyCharm 作为编辑器,谁用谁知道!新手建议先创建虚拟环境(不会的评论区扣1,下期安排教程)
二、🚀 第一个爬虫程序:抓取豆瓣电影Top250
Step 1:发起请求(关键!)
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(response.status_code) # 200表示成功!
划重点📌:
- 必须设置User-Agent伪装浏览器
- 遇到403错误?八成是header没设置好!
- 测试阶段建议用
time.sleep(3)
避免频繁请求
Step 2:解析HTML(BeautifulSoup大法好)
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# 定位电影列表
movies = soup.find_all('div', class_='item')
用浏览器开发者工具(F12)找到元素位置,比女朋友的心思好懂多了!推荐使用 SelectorGadget 插件快速定位元素
Step 3:提取数据(正则表达式警告⚠️)
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
print(f'电影:{title} | 评分:{rating}')
输出示例:
电影:肖申克的救赎 | 评分:9.7
电影:霸王别姬 | 评分:9.6
...
Step 4:存储结果(两种方法任选)
方案A:文本文件
with open('movies.txt', 'a', encoding='utf-8') as f:
f.write(f'{title},{rating}\n')
方案B:CSV文件(推荐🌟)
import csv
with open('movies.csv', 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow([title, rating])
三、💥 防反爬技巧(保命必备!)
-
随机User-Agent:
from fake_useragent import UserAgent ua = UserAgent() headers = {'User-Agent': ua.random}
-
IP代理池(进阶玩法):
proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', } requests.get(url, proxies=proxies)
-
设置请求间隔(别当舔狗!):
import time time.sleep(random.uniform(1,3)) # 随机等待1-3秒
四、🚨 常见报错解决方案
错误代码 | 原因 | 解决方法 |
---|---|---|
403 | 被识别为爬虫 | 检查headers是否完整 |
404 | 网址错误 | 确认url是否正确 |
503 | 服务器压力过大 | 降低请求频率 |
遇到问题先别慌!多看报错信息,90%的问题都能找到线索。实在搞不定?欢迎评论区扔代码片段~
五、💡 进阶路线图
- Scrapy框架:适合大型项目
- Selenium:应对JavaScript渲染
- 分布式爬虫:使用Redis做任务队列
- 数据清洗:Pandas处理脏数据
(悄悄说🤫)掌握了这些,找个15K+的爬虫工程师岗位轻轻松松!
六、⚖️ 道德与法律
再次强调:
- 不要爬取个人隐私数据
- 遵守网站的robots.txt规则
- 控制请求频率(别把人家服务器搞崩了)
- 商用前务必获得授权
记住:技术无罪,但使用技术的人要心存敬畏!
七、🎁 新手大礼包
关注后私信发送"爬虫礼包"获取:
- 豆瓣爬虫完整源码
- 最新User-Agent列表
- 免费代理IP资源
- 反爬破解案例集
👨💻动手时间到! 赶紧把代码跑起来,遇到坑欢迎在评论区交流。下期预告:《Scrapy框架从入门到弃坑指南》!(别真弃啊喂!)