Python零基础学习路线:从环境搭建到爬虫与数据分析实战 这次我们来看一份比较实在的 Python 零基础学习路线。市面上的 Python 教程很多但大部分新手真正缺的不是“再多看一节课”而是一条能直接走下去的学习路径先学什么再学什么学到什么程度可以动手做小项目做爬虫和数据分析时又会遇到哪些真实问题。这次要说的这套 300 集的全套 Python 教程核心就干这件事从环境搭建开始到语法基础、函数、文件操作、面向对象再到网络爬虫和数据分析实战全程按零基础能跟上的节奏组织。如果你现在的目标是“学完 Python 能拿来做点实际的事”尤其是爬虫和数据分析方向这篇文章可以直接收藏。这篇文章我会按实际学习的思路来写先给你一份核心能力速览帮你判断这套路线适不适合自己然后拆解整个学习过程中的关键节点——环境准备、语法基础、爬虫实战、数据分析实战每一部分都会给出可以直接运行的代码示例以及最常踩的坑。内容不会去讲太多概念推导重点放在“你照着做能不能跑通”。如果你属于下面几类读者这篇内容对你的帮助会比较大刚接触编程想选 Python 作为第一门语言的零基础新手已经会一点 Python 语法但不知道下一步往爬虫还是数据分析方向走办公场景里需要批量处理 Excel、网页数据抓取和简单可视化的人学生党、转行党想用一个月左右的时间建立起一套可用的 Python 技能栈。1. 核心能力速览先给这份学习路线做一个整体画像。能力项说明教程定位面向零基础的 Python 全套学习路线覆盖入门到实战内容规模300 集左右的视频/课程内容整体学习节奏按一个月规划主要方向Python 基础语法、网络爬虫、数据分析涉及核心库requests、BeautifulSoup、Scrapy、Pandas、NumPy、Matplotlib学习方式按阶段推进基础语法 - 爬虫实战 - 数据分析实战依赖环境Python 3.8、pip、IDEPyCharm / VS Code、Jupyter Notebook是否支持实操以全程代码演示为主需要边看边敲适合场景零基础入门、求职准备、办公自动化、爬虫/数据分析方向起步注意事项爬虫部分必须遵守 robots 协议、不抓取个人隐私数据、商用前确认数据授权从这套内容覆盖的知识点来看它的思路比较清晰先解决“会不会写 Python”再解决“能不能用 Python 干活”。很多教程只教到语法后面就断了但这套路线在爬虫和数据分析两个方向都做了延伸这也是我说它“少走弯路”的原因——它把从语法到应用中间那段最容易被忽略的路给补上了。2. 适用人群与学习边界先说不适合的情况。这套内容的基础定位决定了它不面向算法岗、不面向已经能独立开发项目的进阶开发者。如果你的目标是一个月内学会 PyTorch 模型训练或者想直接上手分布式爬虫架构这套路线的前半段进度可能偏慢。它不是提升班而是“从零到能上手干活”的路径课。适合的情况完全零基础不需要先修任何编程课学习曲线比较平缓。学过但学得乱以前看过零散教程但一直没形成体系正好可以用这套课把知识串一遍。明确想做数据方向办公自动化、数据清洗、数据可视化、爬虫采集这些方向需要的 Python 基础在这套路线里都有覆盖。时间有限300 集听起来很多但只要不纠结每一行代码的底层原理按每天 2 到 4 小时来安排一个月左右能过完第一轮。边界和合规提醒也要说清楚爬虫合规写爬虫前先看目标网站 robots.txt尊重网站的访问策略不对个人隐私数据、非公开接口做抓取高并发采集前先评估对目标服务器的压力。数据合规批量采集的数据如果要商用必须确认数据来源和授权方式。不要“全背代码”教程是别人的敲出来才是自己的。如果只看不敲这套路线对你没有任何价值。3. 环境准备与前置条件Python 学习门槛很低但环境装不好会劝退很多人。这里给一个通用环境准备清单按顺序操作即可。3.1 Python 解释器安装去 Python 官网下载对应操作系统的安装包安装时注意勾选Add Python to PATH这一步非常关键。不勾选的话后面命令行里输入python会提示找不到命令。安装完成后打开终端Windows 用 CMD 或 PowerShellmacOS/Linux 用 Terminal验证python --version pip --version如果两个命令都能输出版本号说明解释器和包管理器都装好了。3.2 IDE 选择推荐两种组合按个人习惯选一种就行工具建议场景PyCharm Community Edition写脚本、做小项目社区版免费适合系统学语法VS Code Python 插件轻量灵活装扩展后也能调试和跑 JupyterJupyter Notebook数据分析过程更合适代码分格执行方便看中间结果数据分析环节建议 Jupyter 和 IDE 配合用学习基础语法在 IDE 里做数据清洗和可视化在 Notebook 里。3.3 常用库安装后面的爬虫和数据分析会用到这些库直接一次性装好pip install requests beautifulsoup4 lxml pip install pandas numpy matplotlib openpyxl pip install scrapy如果下载速度慢可以配置国内镜像源比如清华源pip install requests beautifulsoup4 pandas -i https://pypi.tuna.tsinghua.edu.cn/simple装完后验证python -c import requests, pandas, matplotlib; print(ok)能输出ok说明环境就绪。4. 学习路线规划从零基础到入门实战300 集内容如果按学习阶段拆其实是四个大的模块。我按每天投入 2 到 4 小时来规划给你一个月的大致节奏。4.1 第一周Python 基础语法核心任务掌握变量、数据类型、流程控制、函数、文件操作。这一周不要贪多重点是写、跑、改。下面是一个基础语法练习的完整示例把变量、条件、循环、函数都串在一起# -*- coding: utf-8 -*- 功能基础语法综合练习 场景统计一个数字列表中所有偶数的平方和 def sum_of_even_squares(numbers): total 0 for num in numbers: if num % 2 0: total num ** 2 return total if __name__ __main__: data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result sum_of_even_squares(data) print(f偶数的平方和: {result})这个练习虽然简单但覆盖了函数定义、for 循环、if 判断、运算符和格式化输出。第一周如果能独立完成类似题目基础语法这一关就算过了。4.2 第二周文件操作与数据处理基础核心任务读写文本文件、处理 CSV/Excel 文件、掌握常用数据结构的转换。真正开始“用 Python 干活”的起点是文件操作因为不管是爬虫采集还是数据分析第一步都是把数据读进来。这里以常见的 Excel 办公场景为例import pandas as pd # 读取 Excel 文件 df pd.read_excel(销售数据.xlsx, engineopenpyxl) # 查看前 5 行 print(df.head()) # 查看数据基本信息 print(df.info()) # 按产品分类汇总销售额 summary df.groupby(产品)[销售额].sum().reset_index() print(summary) # 输出结果到新的 Excel 文件 summary.to_excel(销售汇总.xlsx, indexFalse)这段代码是办公自动化的常见场景。Pandas 在这一步出现得非常早很多初学者会以为 Pandas 是“数据分析阶段才学的库”实际上文件处理阶段引入 Pandas 反而更顺手读写 Excel 和 CSV 比用标准库的csv模块简单直观得多。4.3 第三周网络爬虫基础与实战核心任务用 requests 获取网页内容用 BeautifulSoup 解析内容学会处理翻页和常见反爬机制初步了解 Scrapy 框架。到了第三周你已经能写出完整的脚本了这时候进入爬虫模块会非常有成就感。因为爬虫是“输入一个网址输出结构化数据”的过程反馈非常直接。4.4 第四周数据分析实战核心任务用 Pandas 做数据清洗用 Matplotlib 做可视化通过一个完整项目把“采集 - 清洗 - 分析 - 可视化”串起来。第四周结束后建议做一次综合复盘把前面写过的代码集中整理到一个项目里形成自己的第一个 Python 数据项目。下面分章节详细展开爬虫和数据分析两部分的具体实操。5. 网络爬虫实战与常见问题爬虫是 Python 最常用的落地方向之一。从学习角度来说建议从最简单的单页抓取开始逐步过渡到多页批量抓取和框架化开发。5.1 使用 requests 获取网页import requests url https://example.com headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 } resp requests.get(url, headersheaders, timeout10) resp.encoding utf-8 print(resp.status_code) print(resp.text[:500])这里设置User-Agent是一个基本习惯很多网站会屏蔽默认的 Python 请求头加上一个浏览器 UA 能减少频繁 403 的概率。timeout参数也建议保留避免单个请求卡死整个脚本。5.2 使用 BeautifulSoup 解析内容from bs4 import BeautifulSoup soup BeautifulSoup(resp.text, html.parser) # 提取页面标题 title soup.find(h1) print(title.get_text(stripTrue) if title else 无标题) # 提取所有链接 links [] for a in soup.find_all(a, hrefTrue): href a[href] if href.startswith(http): links.append(href) print(links[:10])解析逻辑的核心是选择器定位。BeautifulSoup 的find和find_all足够覆盖大部分静态页面场景。等遇到更复杂的页面结构可以再补一层 XPath 或 CSS 选择器的知识点。5.3 批量抓取与翻页处理爬虫的价值在批量。以翻页抓取为例常见做法是构造 URL 规则然后循环请求import time import requests from bs4 import BeautifulSoup headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 } all_titles [] for page in range(1, 6): url fhttps://example.com/list?page{page} try: resp requests.get(url, headersheaders, timeout10) resp.encoding utf-8 soup BeautifulSoup(resp.text, html.parser) for item in soup.select(.item-title): all_titles.append(item.get_text(stripTrue)) print(f第 {page} 页完成累计 {len(all_titles)} 条) except Exception as e: print(f第 {page} 页失败: {e}) time.sleep(1) # 控制请求频率减轻对方服务器压力 print(全部完成)批量抓取的关键点是不要自己在一次循环里把访问频率拉满。加time.sleep()不只是礼貌也是降低被封风险的实际手段。如果要抓取的数据量很大一定要做增量采集和失败重试。5.4 Scrapy 框架的引入时机当爬虫需求从“单个网站、几十页”变成“多个网站、上万页面”时就该引入 Scrapy 了。Scrapy 的特点是异步并发、自带选择器、Pipeline 管道和中间件机制采集效率和工程化程度比手写 requests 高很多。Scrapy 里一个最基础的 Spider 长这样import scrapy class ExampleSpider(scrapy.Spider): name example start_urls [ https://example.com/list, ] def parse(self, response): for item in response.css(.item): yield { title: item.css(.item-title::text).get(), link: item.css(a::attr(href)).get(), }新手第一次用 Scrapy 时可以先不急着改框架配置用默认模板跑通一个完整流程创建项目 - 编写 Spider - 运行爬虫 - 导出数据。跑通之后再深入中间件、代理池、分布式这些进阶概念。5.5 爬虫方向的合规提醒这块必须单独提一句抓取前先看目标网站的robots.txt尊重站点的爬取规则。不对需要登录才能访问的非公开数据做抓取。不采集身份证号、手机号、住址等个人敏感信息。采集数据的用途要明确商用或公开发布前确认版权和授权。6. 数据分析实战与可视化数据分析这部分我会按照“读数据 - 清洗 - 分析 - 可视化”的完整链路来写这也是新手最容易跑通的流程。6.1 数据读取与初步检查数据分析的第一步不是画图而是先搞清楚拿到的数据长什么样。Pandas 里最基本的两个函数是head()和info()import pandas as pd # 读取 CSV 文件 df pd.read_csv(用户数据.csv) # 查看前 5 行 print(df.head()) # 查看列名、数据类型、缺失情况 print(df.info()) # 查看数值型列的描述性统计 print(df.describe())这里有一个容易踩的坑Pandas 的read_excel在读取.xls和.xlsx时依赖的引擎不一样。如果你用的是老版本的.xls文件可能需要指定引擎df pd.read_excel(老数据.xls, enginexlrd)如果读到新版.xlsx则建议用openpyxl引擎。用 Pandas 写回数据时如果遇到“表格只能有 65536 行”之类的限制大概率是用了老式的.xls格式或者走了 Excel 本身的兼容模式。解决方案很简单把输出格式改成.xlsx必要时手工调整pd.ExcelWriter的引擎参数。6.2 数据清洗真实数据基本都会带脏数据所以清洗是分析前的固定环节。常见清洗操作有处理缺失值、删除重复记录、转换数据类型、统一文本格式。# 缺失值处理删除缺失比例过高的列 df.dropna(axis1, threshint(0.8 * len(df)), inplaceTrue) # 缺失值填充数值列用中位数填充 df[年龄] df[年龄].fillna(df[年龄].median()) # 删除重复记录 df.drop_duplicates(inplaceTrue) # 转换数据类型 df[下单时间] pd.to_datetime(df[下单时间]) df[金额] pd.to_numeric(df[金额], errorscoerce)清洗完成后建议做一次数据校验检查每个字段的取值是否在合理范围内金额是否出现负数日期是否有异常时间点。这一步能避免后面画图和分析时被脏数据带偏。6.3 分组聚合分析清洗完的数据就可以开始分析了。Pandas 里最常用的手段是groupby聚合# 按城市统计用户数量 city_count df.groupby(城市)[用户ID].nunique().reset_index() city_count.columns [城市, 用户数] # 按月份统计销售额 df[月份] df[下单时间].dt.to_period(M) monthly_sales df.groupby(月份)[金额].sum().reset_index() print(city_count) print(monthly_sales)如果你能把groupby配合agg用熟大部分日常报表需求都能应付result df.groupby(城市).agg( 用户数(用户ID, nunique), 总销售额(金额, sum), 平均订单额(金额, mean), ).reset_index() result result.sort_values(总销售额, ascendingFalse) print(result)6.4 数据可视化Matplotlib 是 Python 可视化的基础库Pandas 也内置了基于 Matplotlib 的绘图接口。下面是一个完整的基础可视化示例import matplotlib.pyplot as plt # 支持中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 绘制销售额趋势折线图 plt.figure(figsize(10, 5)) plt.plot(monthly_sales[月份].astype(str), monthly_sales[金额], markero) plt.title(月度销售额趋势) plt.xlabel(月份) plt.ylabel(销售额) plt.grid(True) plt.tight_layout() plt.savefig(销售趋势.png, dpi150) plt.show()如果你的系统里没有 SimHei 字体中文标签会显示成方框。这种情况可以换成电脑里已有的中文字体比如 macOS 下的Arial Unicode MS或 Linux 下的WenQuanYi Zen Hei也可以把字体路径传给rcParams。6.5 数据清洗与分析的连贯项目学完爬虫和数据分析之后最容易掉进“各种功能都会但连不起来”的坑。建议做一个小型完整项目来打通整个链路比如目标采集一个公开的图书榜单分析图书价格分布和评价数量关系。 流程 1. 用 requests BeautifulSoup 抓取图书列表页 2. 提取书名、价格、评分、评论数等字段 3. 用 Pandas 做数据清洗和字段类型转换 4. 用 Matplotlib 画出价格分布直方图和评分-评论数散点图 5. 输出一份 Markdown 或 Excel 汇总报告。这个项目不需要用到复杂模型但把“采集 - 清洗 - 分析 - 可视化 - 输出报告”的完整链路跑通了。把这套流程跑一遍你对 Python 的学习就不再是“知道知识点”而是“能自己搭建一个小工具”。7. 接口 API 与自动化扩展方向这套路线学到中后期一定会遇到一个词API。这里简单说一下 API 在爬虫和数据分析两个场景里的作用和你值得花时间学习的方向。7.1 调用公开 API 获取数据很多平台提供官方 API相比直接爬网页API 更稳定、权限边界也更清晰。Python 里调用 API 非常直接import requests url https://api.example.com/data params { page: 1, page_size: 50, } headers { Authorization: Bearer YOUR_TOKEN } resp requests.get(url, paramsparams, headersheaders, timeout10) if resp.status_code 200: data resp.json() items data.get(items, []) print(f获取到 {len(items)} 条数据) else: print(f请求失败: {resp.status_code} {resp.text})调用 API 时重点看三块鉴权方式Token / Key、分页参数、限流规则。大部分 API 都会在文档里写清楚每分钟最多请求多少次超了会被限流甚至封禁。7.2 数据分析流程的自动化当你经常要做同一种报表时就可以把清洗和分析代码封装成函数留几个参数入口def generate_sales_report(file_path, output_path): df pd.read_excel(file_path, engineopenpyxl) df clean_data(df) monthly df.groupby(df[下单时间].dt.to_period(M))[金额].sum() monthly.to_excel(output_path, indexTrue) return monthly这样以后每个月底只需要跑一次脚本就能自动输出当月销售汇总。这也是办公自动化的核心思路把重复劳动变成一行命令。学习建议上如果目标是走爬虫方向可以把 API 和 Scrapy 的 Pipeline 输出学好如果目标是走数据分析方向可以把 Pandas 的聚合和自动化报表写好。两个方向不是互斥的但新手的精力有限先在一个方向上做出一个完整项目再补齐另一个方向的知识会更高效。8. 常见问题与排查方法学习过程中最影响心态的就是环境问题和各种报错。这里整理一份高频问题清单遇到问题可以直接对照排查。问题现象可能原因排查方式解决方案python不是内部或外部命令安装时未勾选 Add to PATH在终端输入echo %PATH%或检查系统环境变量手动把 Python 安装目录加入 PATH或重装并勾选 Add to PATHpip不是内部或外部命令Python 环境变量不完整检查 Python 安装目录下是否有 Scripts 文件夹把Python安装目录/Scripts加入 PATHpip install下载非常慢默认源在国外查看下载日志中的连接耗时更换为清华、阿里等国内镜像源爬虫返回 403缺少 User-Agent 或被反爬打印请求头看返回内容是否为验证页面添加浏览器 User-Agent降低请求频率使用 Cookie爬虫返回页面内容为空可能是动态页面数据由 JS 渲染查看页面源代码是否含目标文本改用 Selenium/Playwright 或寻找内置 JSON 数据接口读取 Excel 报错或行列数限制旧格式.xls/ 引擎不匹配打印文件后缀和 Pandas 版本使用engineopenpyxl读写.xlsx避免旧格式中文显示成方框Matplotlib 默认字体不含中文检查绘图界面和保存图片中的字符设置plt.rcParams[font.sans-serif]为中文字体CSV 读取后中文乱码文件编码不是 UTF-8查看原始文件编码用pd.read_csv(文件.csv, encodinggbk)或转码为 UTF-8代码运行报ModuleNotFoundError库未安装或装了不同环境用pip list检查重新执行pip install 包名确认和代码使用同一个 Python 环境端口占用或服务起不来本机软件占用了默认端口查看错误日志中的端口信息换端口或在命令中指定新的端口参数爬虫批量任务卡住请求超时或无异常处理观察是单个 URL 卡住还是整体卡住给requests加timeout配合try/except和重试逻辑排查问题的方法很统一先看报错信息再看数据样例最后再改代码。不要一报错就怀疑是库没装好大多数情况下问题出在编码、路径、数据格式和网络请求上。9. 学习建议与最佳实践这篇内容最后汇总几条对新手最实用的建议也是我在各种技术社区里看下来最常被验证有效的学习习惯。9.1 边看边敲每天至少输出一段完整代码看视频的“会了”和亲手敲出来的“会了”完全是两码事。建议准备一个专门的学习项目目录每天把当天学到的内容封装成一个小脚本。哪怕只是统计一个 CSV 文件的行数也要写成一个完整的.py文件跑一遍。9.2 第一次以小步快跑为准不要一开始就想着抓一个超大网站、做一个非常复杂的分析模型。第一个爬虫可以从抓取一个静态列表页开始第一个分析项目可以从 100 行以内的数据开始。小步跑通再逐步加大数据量和功能范围。9.3 把代码和素材分开管理学习期间建议建立清晰的目录结构python-learning/ ├── basics/ # 基础语法练习 ├── crawler/ # 爬虫脚本与采集结果 │ ├── scripts/ │ └── data/ ├── analysis/ # 数据分析项目 │ ├── notebooks/ │ ├── input/ │ └── output/ └── utils/ # 常用工具函数数据文件、爬虫脚本、分析 Notebook 分开存放后续复盘和扩展会省很多事。9.4 批量任务必须加日志和重试不管做爬虫还是数据报表只要涉及批量处理脚本里就应该加入日志输出和失败重试。最低限度的做法是用try/except捕获异常把失败记录写入一个日志列表跑完后统一查看。9.5 学会用搜索引擎和官方文档遇到报错先复制报错信息去搜索比反复看教程找答案效率更高。Python、Pandas、Requests 这些项目的官方文档质量都很高养成查文档的习惯后学习速度会明显提升。9.6 版权和授权意识从一开始就建立爬虫采集的数据如果涉及第三方平台内容不要理所当然地认为“网上能访问就能随便用”。强调三件事采集前看 robots 协议、不采个人隐私数据、商用前确认授权。这不是套话而是你以后靠 Python 接项目、做产品时真正会遇到的合规问题。10. 收尾这套路线最值得试的部分如果时间有限我建议你按下面这个优先级来推进第一优先级先把环境装好把基础语法里“变量、条件、循环、函数”这一组核心学过一遍。这是后面所有内容的地基。第二优先级尽快进入 Pandas 做文件操作。当你能用 Python 读写 Excel/CSV 的时候就已经能用 Python 干活了这个正反馈非常强。第三优先级爬虫和数据分析各跑通一个小项目。不追求代码多优雅完整跑通即可。爬虫过一遍 requests BeautifulSoup数据分析过一遍读文件 清洗 groupby 画图。最容易踩的坑有两个一是装在 Python 环境上的库对不上二是爬虫请求没有加 UA 和超时限制导致频繁失败。这两个问题遇到时对照上面的排查表格处理即可。这套 300 集的 Python 全路线最大的价值不是“知识点更多”而是把从零基础到入门实战的路给铺平了。你不需要再自己东拼西凑找下一节应该学什么按阶段往下推一个月后大概率能拥有自己写脚本、自己抓数据、自己做分析的能力。建议先收藏然后从配置环境开始动手。

相关新闻

最新新闻

手撕BERT:中文情感分析从数据清洗到可解释推理

手撕BERT:中文情感分析从数据清洗到可解释推理

简介:BERT作为主流预训练语言模型,其在文本分类任务中的落地并非简单调用API,而是涉及词嵌入、注意力机制、微调策略与可解释性等核心原理。掌握BERT情感分析,需深入理解Tokenizer映射规则、[CLS]与池化融合的表征逻辑、标签平滑对…

2026/8/29 4:56:12
字节跳动面试全流程复盘:算法、系统设计与避坑指南

字节跳动面试全流程复盘:算法、系统设计与避坑指南

说实话,我一直觉得面经这玩意儿写出来容易过时,尤其是大厂面试,规则说变就变。但这次自己完整走了一遍字节跳动的面试流程之后,我发现有些东西是“铁打的套路”,不随HC多少、不随面试官性格转移。尤其是最近这批新鲜出…

2026/8/29 4:56:12
翼型优化实战:从参数化建模到代理模型优化的完整工程指南

翼型优化实战:从参数化建模到代理模型优化的完整工程指南

简介:本资源是一套面向计算机、电子信息工程及数学等专业本科生的飞行器翼型优化设计MATLAB实践方案,聚焦航空工程中升力/阻力性能提升这一核心问题,适用于课程设计、期末大作业与毕业设计等教学场景。压缩包共27个文件,含21个功能…

2026/8/29 4:56:12
文档不想再加密了?Word打开密码移除的两种方法

文档不想再加密了?Word打开密码移除的两种方法

取消Word打开密码,前提是你要知道自己现在的密码是什么。如果没有了密码,就连文档也打不开,自然也就不能取消了。如果真的忘记了密码的话,请直接跳转到文章最后的部分。方法一:在“信息”菜单中取消这是最简单的方式&a…

2026/8/29 4:56:12
AI模型开始玩“盲盒“,开发者用六天把一头“牛“送上榜首

AI模型开始玩“盲盒“,开发者用六天把一头“牛“送上榜首

上周三深夜,我那位做Agent工具的朋友发来一张截图:OpenRouter七日用量榜首冒出一个他不认识的模型——"Ox Alpha",开发者一栏就两个字"stealth"。他第一反应是"哪家在偷偷上分?"我让他别急&#xf…

2026/8/29 4:56:12
Java秋招面试高频考点与系统复习路线全解析

Java秋招面试高频考点与系统复习路线全解析

秋招Java面试,说实话准备起来压力不小。网上到处是“Java面试八股文”,但真到面试现场,很多背得很熟的东西一被追问就卡壳。我秋招那会儿也踩过不少坑,从基础语法到集合源码,从算法手撕到环境排错,前前后后…

2026/8/29 4:51:12