Python爬虫入门详细教程:从0到1爬取网页数据,看一遍就能上手(附实战案例+避坑指南)
Python爬虫就是用Python代码模拟浏览器访问网页的行为,把网页上的文字、图片、数据等信息“扒”下来,再整理成我们想要的格式(比如Excel、TXT)。举个通俗的例子:你想手动从豆瓣Top250页面复制所有电影名称和评分,要一页页点开、复制、粘贴,耗时又费力;而爬虫就是替你干这个活的“机器人”——自动打开网页、找到电影信息、复制下来、存到Excel里,几分钟就能搞定你几小时的工作量。Pyth
作为一名自学Python爬虫的程序员,我至今记得第一次上手的窘迫:对着网上一堆“高大上”的教程,装环境装了半天,写的第一行代码就报错,想爬个简单的小说章节,结果要么被网站拒绝,要么爬出来一堆乱码。后来才发现,新手学爬虫最怕“教程太抽象、步骤跳着来”,其实爬虫核心逻辑就3步,只要把环境搭对、把原理摸透,再跟着简单案例实操一遍,半小时就能入门。
今天我就把自己踩坑总结的“保姆级爬虫教程”分享出来,全程通俗易懂,没有复杂术语,从环境搭建到实战爬取豆瓣电影数据,每一步都写得明明白白,新手看一遍就能跟着敲代码,看完就能独立爬取简单网页的数据。
一、爬虫入门先搞懂:这3个核心问题要先清
新手学爬虫,不用一上来就写代码,先搞懂3个基础问题,能少走80%的弯路:
1. 什么是Python爬虫?用“人话”讲清楚
简单说:Python爬虫就是用Python代码模拟浏览器访问网页的行为,把网页上的文字、图片、数据等信息“扒”下来,再整理成我们想要的格式(比如Excel、TXT) 。
举个通俗的例子:你想手动从豆瓣Top250页面复制所有电影名称和评分,要一页页点开、复制、粘贴,耗时又费力;而爬虫就是替你干这个活的“机器人”——自动打开网页、找到电影信息、复制下来、存到Excel里,几分钟就能搞定你几小时的工作量。
2. 爬虫能用来干嘛?新手常用的3个场景
- 数据收集:爬取电影评分、商品价格、招聘信息、小说章节等,做数据分析或整理;
- 个人实用:比如爬取心仪的壁纸图片、整理知乎高赞回答、监控电商商品降价提醒;
- 入门练手:爬虫是Python新手练手的绝佳项目,能快速掌握Python的核心语法和第三方库使用。
3. 重要提醒:爬虫不是“想爬就爬”
新手一定要注意:爬虫不能违反法律法规和网站规则!
- 遵守
robots.txt协议:每个网站根目录下的robots.txt文件(比如https://www.douban.com/robots.txt)会说明哪些内容可以爬、哪些不行; - 不要高频爬取:短时间内大量请求会给网站服务器造成压力,容易被封IP;
- 敏感数据不能爬:比如用户隐私、付费内容、版权数据等,爬取违法。
二、入门第一步:搭建爬虫环境(5分钟搞定)
爬虫的环境搭建很简单,核心就是“安装Python + 安装必备库”,新手按步骤来,零出错:
1. 安装Python(新手选3.8-3.10版本)
Python是爬虫的基础,版本选3.8到3.10最稳定,步骤如下:
- 下载:打开Python官网(https://www.python.org/),点击“Downloads”,选择对应系统(Windows/Mac)的3.9版本(新手推荐);
- 安装:
- Windows:双击安装包,一定要勾选“Add Python 3.9 to PATH”(关键!否则后续命令行找不到Python),然后点击“Install Now”;
- Mac:双击dmg文件,按提示安装即可;
- 验证:打开电脑的“命令提示符(CMD)”(Windows)或“终端(Terminal)”(Mac),输入
python --version,如果显示“Python 3.9.x”,说明安装成功。
2. 安装代码编辑器(推荐PyCharm社区版)
纯记事本写代码太麻烦,PyCharm是新手友好的编辑器,免费又好用:
- 下载:打开PyCharm官网(https://www.jetbrains.com/pycharm/),选择“Community Edition”(社区版,免费)下载;
- 安装:按提示下一步即可,不用改默认设置;
- 新建项目:打开PyCharm→点击“New Project”→选择项目保存路径→点击“Create”,就能创建第一个爬虫项目。
3. 安装爬虫必备的2个核心库
Python自带的库不够用,需要安装2个核心第三方库,在PyCharm里操作更简单:
- 打开PyCharm→点击顶部“File”→“Settings”→“Project: 你的项目名”→“Python Interpreter”;
- 点击右侧“+”号,搜索第一个库:
requests(用来给网页发送请求,获取网页内容),点击“Install Package”安装; - 再搜索第二个库:
beautifulsoup4(用来解析网页内容,提取想要的数据),同样安装; - 验证:安装完成后,在PyCharm的代码编辑区输入
import requests和import bs4,如果没有红色报错,说明安装成功。
(补充:也可以用命令行安装,在CMD/终端输入pip install requests beautifulsoup4,网速慢的话加国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests beautifulsoup4)
三、爬虫核心逻辑:3步搞定网页数据爬取
新手不用记复杂理论,爬虫的核心就3步,用“爬取豆瓣Top250电影信息”为例,一步步拆解:
核心步骤拆解(通俗版)
- 发送请求:用
requests库模拟浏览器访问目标网页,拿到网页的“源代码”(相当于你打开网页后,右键“查看网页源代码”看到的内容); - 解析数据:用
beautifulsoup4库从源代码里“筛选”出我们想要的信息(比如电影名称、评分); - 保存数据:把筛选出来的信息存到Excel/TXT文件里,方便查看和使用。
实战案例:爬取豆瓣Top250电影(标题+评分+简介)
这是新手最适合的入门案例,数据结构简单,没有复杂反爬,跟着敲代码就能成:
步骤1:写核心爬虫代码(逐行解释,新手能懂)
在PyCharm里新建一个douban_spider.py文件,复制以下代码(每一行都有注释):
# 导入必备库
import requests
from bs4 import BeautifulSoup
import csv # 用来保存CSV/Excel文件
# 1. 定义请求头:模拟浏览器访问(避免被网站识别为爬虫)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
# 2. 定义目标网址(豆瓣Top250第一页)
url = "https://movie.douban.com/top250?start=0&filter="
def get_movie_info():
try:
# 第一步:发送请求,获取网页源代码
# get方法:发送GET请求;headers:带上请求头;timeout:超时时间(避免卡壳)
response = requests.get(url, headers=headers, timeout=10)
# 解决乱码问题:设置网页编码(豆瓣是utf-8)
response.encoding = "utf-8"
# 拿到网页源代码
html = response.text
# 第二步:解析数据,提取电影信息
# 创建BeautifulSoup对象,指定解析器(lxml,内置的,不用额外装)
soup = BeautifulSoup(html, "html.parser")
# 找到所有电影条目(通过F12查看网页结构,发现每个电影在class="item"的div里)
movie_list = soup.find_all("div", class_="item")
# 遍历每个电影条目,提取信息
movies = []
for movie in movie_list:
# 提取电影标题(找到class="title"的span标签,取文本)
title = movie.find("span", class_="title").text
# 提取电影评分(找到class="rating_num"的span标签,取文本)
score = movie.find("span", class_="rating_num").text
# 提取电影简介(找到class="inq"的span标签,没有则显示“无简介”)
quote = movie.find("span", class_="inq").text if movie.find("span", class_="inq") else "无简介"
# 把信息存入列表
movies.append([title, score, quote])
# 打印测试:看是否提取成功
print(f"电影:{title},评分:{score},简介:{quote}")
# 第三步:保存数据到CSV文件(Excel能直接打开)
with open("豆瓣Top250电影.csv", "w", newline="", encoding="utf-8") as f:
# 创建CSV写入对象
writer = csv.writer(f)
# 写入表头
writer.writerow(["电影标题", "评分", "简介"])
# 写入电影数据
writer.writerows(movies)
print("数据爬取并保存成功!文件保存在项目文件夹里")
except Exception as e:
# 异常处理:打印错误信息,新手能排查问题
print(f"爬取失败,错误原因:{e}")
# 调用函数,执行爬虫
if __name__ == "__main__":
get_movie_info()
步骤2:运行代码,查看结果
- 点击PyCharm右上角的“运行”按钮(绿色三角);
- 等待几秒,控制台会打印出电影信息,同时项目文件夹里会出现“豆瓣Top250电影.csv”文件;
- 双击打开这个CSV文件,就能看到整理好的电影标题、评分、简介,完成!
代码关键部分解释(新手必懂)
- 请求头(headers):这是新手最容易漏的!网站会识别“非浏览器”的请求,加上User-Agent(浏览器标识),就能模拟正常访问,避免被拒绝;
- BeautifulSoup解析:
find_all是“找所有符合条件的标签”,find是“找第一个符合条件的标签”,class_加下划线是因为class是Python关键字,避免冲突; - 异常处理(try-except):网络波动、网页结构变化都会导致报错,加异常处理能让程序不崩溃,还能看到错误原因;
- 编码设置(response.encoding):不加的话,爬取的中文会变成乱码,豆瓣用utf-8,大部分中文网站都是这个编码。
四、新手爬虫必避的5个坑(我当年全踩过)
-
坑1:请求被拒绝(报错403 Forbidden)
原因:没加请求头,被网站识别为爬虫;
解决:一定要加User-Agent,代码里已经写好,新手直接复制用就行。 -
坑2:爬取的内容是乱码
原因:网页编码和程序编码不匹配;
解决:加response.encoding = "utf-8",如果还乱码,试试gbk(部分国内网站用gbk)。 -
坑3:解析不到数据(返回空值)
原因:网页结构变了,或者标签/class名称写错;
解决:打开目标网页→右键“检查”(F12)→找到对应数据的标签,核对代码里的class/标签名称。 -
坑4:程序卡住不动
原因:没有设置超时时间,网络慢或网站响应慢导致;
解决:requests.get里加timeout=10,10秒没响应就停止,避免卡壳。 -
坑5:爬取多页时被封IP
原因:短时间内多次请求,网站限制访问;
解决:加延时,导入time库,在循环里加time.sleep(1)(每次请求间隔1秒),降低请求频率。
五、爬虫进阶方向(入门后该学什么)
学会基础爬虫后,可根据需求进阶,新手不用贪多,逐个突破:
- 爬取多页数据:比如爬取豆瓣Top250的所有250部电影,只需修改URL里的
start参数(0→25→50…),加循环即可; - 爬取动态网页:比如京东、淘宝的商品数据(网页内容是JS加载的),需要学
selenium库(模拟浏览器点击、滚动); - 反爬应对:遇到封IP,学用代理IP;遇到需要登录的网站,学用
cookies或session保持登录状态; - 数据存储进阶:把数据存到MySQL、MongoDB数据库,方便后续分析;
- 爬虫框架:学
Scrapy框架,能高效开发大型爬虫,适合批量爬取数据。
六、爬虫规范:新手一定要注意
- 不要爬取敏感数据(比如用户手机号、身份证、付费内容),违法!
- 控制爬取频率,不要给网站服务器造成压力(比如间隔1秒以上);
- 遵守网站的
robots.txt协议(比如豆瓣的robots规定不能爬取用户私信,就不要碰); - 爬取的数据仅用于个人学习,不要商用,避免版权纠纷。
总结:爬虫入门的核心是“实战”
Python爬虫入门真的不难,核心就3步:发请求→解析数据→存数据。新手不用一开始就学复杂的反爬、框架,先把“豆瓣Top250”这个案例敲懂、跑通,再尝试爬取自己感兴趣的内容(比如小说、壁纸),在实战中解决问题,比死记理论快10倍。
我当年学爬虫时,为了解决“乱码”问题,查了一下午资料,现在回头看,那些踩过的坑、调通的代码,才是最宝贵的经验。记住:爬虫的本质是“解决问题”,不是“背代码”,只要敢动手、敢试错,看完这篇教程,你已经能搞定80%的简单爬虫需求了。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)