总有人问我,学Python到底能不能搞副业。我自己就是最普通的例子——白天在一家小公司做数据分析,下班后接点私活,靠3个项目把副业收入稳定在每月5000块左右。听起来像标题党,但里面没有任何一门高深技术,全是Python最基本的那套东西:爬虫、pandas清洗、openpyxl写Excel、再加点自动化脚本的零碎功夫。这篇就把我这几年真实在做的项目、踩过的坑、报价和交付的细节全盘托出来,给想走这条路的人一个参考。
1. 先说大实话:Python副业的钱,到底从哪来
我在很多新手群里看到的现象是:大家学Python的时候总惦记着工资翻倍、进大厂、做人工智能,这当然没错。但真拿Python赚钱,尤其在副业阶段,逻辑完全不一样——绝大部分钱来自"帮别人省时间"和"帮别人处理他自己搞不定的数据"。
1.1 三个项目的收入构成
先把我每个月的收入结构摆出来,不是炫耀,是让你们对"5000块"有一个具体的感知:
| 项目 | 月均单量 | 单价区间 | 月收入区间 |
|---|---|---|---|
| 电商商品评价数据清洗 | 3-5单 | 600-900元/单 | 1800-3000元 |
| 企业Excel日报自动化 | 1-2单 | 800-1500元/单 | 800-2500元 |
| 批量处理小工具 | 5-8份 | 30-100元/份 | 300-800元 |
三个加起来,确实能到5000上下。注意这个结构很有意思:最赚钱的不是看起来最难的,而是需求最标准化的。评价清洗做到后来,我甚至不写代码,套模板改改字段就交付了。
1.2 接单能力比编码能力重要得多
这行有个反直觉的事实:真正让你接到单的,不是你会多少框架,而是你能不能听懂客户嘴里那句"大概就是这样"背后的真实需求。比如客户跟你说"我要爬一下这些商品的评价",他实际要的是"把好评、差评、关键词频率都统计好,最好做成Excel给我"。
我常用的Python技术栈极其朴素,列出来你们别笑:
requests+BeautifulSoup:处理公开网页数据抓取pandas:清洗、去重、统计、透视openpyxl:生成带格式的Excel报表os、pathlib、shutil:批量处理文件名和目录tkinter:给外行客户做一个简单界面schedule:定时任务的简易方案
没有FastAPI,没有Redis,没有Celery。副业项目体量根本用不到这些,用了反而是给自己添麻烦。
1.3 你至少要会到什么程度才能接单
我建议的底线是:能独立用pandas完成分组统计,能写一个带参数的函数,能处理最常见的编码问题(比如把GBK读成UTF-8导致乱码)。这三件事都过关了,你就可以接第一单了。说白了,副业接单不需要你成为架构师,更需要你像一个"手艺人"。
很多教程喜欢把Python副业描述成"搞个爬虫躺着赚钱",这话只说对了一半。爬虫能赚钱,但如果只会爬虫,你很快就会碰上技术之外的壁垒,后面几章我会一个个拆开讲。
2. 项目一:商品评价数据清洗,用爬虫把散数据榨出价值
这是我副业里最稳定的一块收入来源,也是很多新手最容易上手的方向。
2.1 客户是谁,痛点在哪
做电商的卖家,尤其是做淘宝、拼多多、抖音小店的个体户,特别需要知道同行和自家商品评价里,用户到底在夸什么、骂什么。比如一款数据线,差评里高频出现的词是"短""接口松""发烫",那用户痛点和产品改进方向就非常明确了。
问题在于:平台后台虽然能看到评价,但不能批量导出,更不会帮你统计词频。卖家自己复制粘贴几百条评价到Excel,眼睛都看花了。于是这种"人工活"就变成了我的"技术活"。
2.2 核心实现思路
技术本身不复杂。公开的商品评价页面,用requests获取HTML,再用BeautifulSoup解析出评论文本,最后用pandas做词频统计和情感倾向分类。
import requests from bs4 import BeautifulSoup import pandas as pd from collections import Counter # 模拟浏览器请求头,这一步对很多网站是必须的 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } # 这里以某个公开页面的评价列表为例 url = "https://example.com/product/reviews?page=1" resp = requests.get(url, headers=headers, timeout=10) soup = BeautifulSoup(resp.text, "html.parser") reviews = [] for item in soup.select(".review-item"): text = item.select_one(".review-text").get_text(strip=True) rating = item.select_one(".review-rating").get("data-score") reviews.append({"评价内容": text, "评分": rating}) df = pd.DataFrame(reviews) # 简单分词并统计高频词 def tokenize(text): return [c for c in text if len(c) > 1 and not c.isdigit()] word_counter = Counter() for content in df["评价内容"]: word_counter.update(tokenize(content)) top_words = word_counter.most_common(20)交付给客户的Excel长这样:一个sheet是原始评价数据,另一个sheet是高频词统计,再配一个Excel自带的柱状图。客户就算完全不懂数据分析,打开文件也能一眼看出"信号差"被提了58次,"续航好"被提了43次。
2.3 藏在细节里的三个坑
第一坑是请求频率。以前我图省事做并发爬取,半小时把人家几千条评价全拉完了,结果第二天再跑同一家的数据,IP直接被封。现在所有爬虫都加延时,单线程跑就单线程跑,副业爬虫最重要的是不被封,而不是跑得快。
第二坑是编码。很多电商页面的编码不是标准UTF-8,有的接口返回的是GBK。resp.encoding = resp.apparent_encoding这行代码能解决80%的乱码问题,但偶尔遇到返回\\u开头的中文转义符,还得用ensure_ascii=False处理。
第三坑是字段漂移。今天页面结构是.review-text,后天别人改版就成了.review-content。所以每次爬到5页以后,我要随手打印前几条结果看一眼,确认选择的元素还正常,否则数据会大面积丢失,交单的时候特别尴尬。
2.4 为什么这单能稳定赚到钱
因为它是低频但强需求的活,而且客户一旦用过一次,每个月都想跑一次数据看看同行动态。复购率非常高。我做了一版带界面的小工具,每次只要把商品链接粘贴进文本框,点击"开始分析",十几分钟后自动生成Excel。这样一来我的边际成本几乎降为零,价格却可以按固定档位收。
需要提醒的是,这个项目天然有合规边界。我只处理公开可访问的页面,不做绕过登录、突破验证码、付费数据爬取这些事。接单前我也会跟客户说明数据仅用于公开信息整理,规避法律风险。
3. 项目二:Excel日报自动化,把客户的重复劳动变成脚本任务
如果说爬虫项目是"帮客户拿数据",那Excel自动化就是"帮客户做报表"。这个需求在中小公司里多到超乎你的想象。
3.1 一个让我印象深刻的客户场景
有次接了个民宿运营公司的单子,对方每天要汇总五个平台(美团、携程、飞猪、抖音、自有系统)的订单数据。运营小姑娘每天早上要先登录各个后台导出Excel,再复制粘贴到一个汇总表,算完前日营收、入住率、各平台占比,前前后后差不多两小时。
她希望我把这两小时压缩成"双击一个按钮,等半分钟"。
3.2 实现方案:模板先行,脚本跟上
这类任务的难点不在写代码,而在"搞清楚客户最终的表格长什么样"。我当时的做法是:
- 先让客户给一份过去的日报成品,作为输出模板
- 分析模板里的每一项指标怎么计算得出
- 再反向设计脚本逻辑
核心用openpyxl,一边读取五个来源表,一边往模板里填数据:
from openpyxl import load_workbook import pandas as pd # 读取各渠道数据 meituan = pd.read_excel("meituan.xlsx") ctrip = pd.read_excel("ctrip.xlsx") # 汇总营收 total_revenue = meituan["订单金额"].sum() + ctrip["订单金额"].sum() # 打开日报模板 wb = load_workbook("日报模板.xlsx") ws = wb["每日汇总"] # 填写关键指标 ws["B3"] = total_revenue ws["B4"] = len(meituan) + len(ctrip) ws["B5"] = total_revenue / 5 # 按5个平台均摊 ws["B6"] = meituan["订单金额"].sum() / total_revenue wb.save(f"日报_{pd.Timestamp.now().date()}.xlsx")再配上schedule库实现上班前自动跑一次:
import schedule import time def job(): print("开始生成报表...") # 这里调用上面的业务逻辑 schedule.every().day.at("09:00").do(job) while True: schedule.run_pending() time.sleep(30)3.3 落地时最容易翻车的环节
这个项目最大的坑从来不是写代码,而是客户电脑上的运行环境。
我做第一单的时候,交付的是一份Python源码,还贴心地写了依赖清单。结果客户那边装了一个Python 3.12,pandas的wheel包安装报错,卡了一下午。后来我的交付方式就改了,优先用pyinstaller把脚本打包成exe,客户双击就能运行,不需要在电脑上装任何环境。
pyinstaller -F -w report_generator.py一个参数-F是打包成单文件,-w是不显示黑色控制台窗口。打包出来的文件发给客户,他能直接放桌面用。
还有个小细节:写文件路径时不要写绝对路径,用相对路径或让用户选择文件夹路径。你的电脑上路径是C:\Users\你的名字\Desktop,客户那边完全不同。
3.4 关于需求变更,我的态度是"提前锁死范围"
这类项目做完第一版只是开始,客户几乎一定会提新需求:"能不能在表里加一列昨天的环比数据""能不能自动发到企业微信群""能不能按门店拆分开"。
一开始我习惯免费改,改到第三轮就吃不消了。后来规范了接单流程,首次报价包含两轮小修改,超过两轮按新需求报价。听起来不近人情,但恰恰是因为边界清楚,客户反而更信任我,后续加功能都愿意付钱,才有了几次追加开发收入。
4. 项目三:批量处理小工具,闲鱼式接单也能跑出稳定零花钱
第三个项目我不打算写太复杂的技术,因为它本身不复杂。但它是三个里面最符合"不务正业"这个词的。
4.1 一个意外跑出量的小工具
有段时间我在二手交易平台上挂了个商品页面,介绍写的是"Python脚本定制,帮你处理重复文件操作"。陆续有人来问,其中问得最多的一个需求是:批量重命名一大堆从网上下载的图片,把命名规则从"IMG_20230101_123456.jpg"改成"20230101_客户名_序号.jpg"。
这个需求听起来小得可笑,但真的很多人需要,尤其是一些做电商上新、做自媒体素材整理的人。而且这活用Python写起来就是几十行的事。
4.2 简陋但好用的实现
我没有做得特别花哨,做了一个tkinter小界面,让用户点选文件夹、填前缀、点开始,就完事了。核心逻辑用的就是os.walk加字符串处理:
import os import re import tkinter as tk from tkinter import filedialog from pathlib import Path def batch_rename(folder_path, prefix): count = 1 for root, dirs, files in os.walk(folder_path): for name in files: if name.lower().endswith((".jpg", ".png", ".jpeg")): old_path = Path(root) / name # 提取原文件中的日期部分 match = re.search(r"(\d{8})", name) date_part = match.group(1) if match else "nodate" new_name = f"{prefix}_{date_part}_{count:03d}{old_path.suffix}" new_path = old_path.with_name(new_name) old_path.rename(new_path) count += 1后来量上来了,几千张图片同时处理,单线程明显慢,我加了concurrent.futures的ThreadPoolExecutor做多线程,速度提升了三四倍。文件操作这种IO密集型任务,多线程足够,没必要上多进程,这是我个人实测下来的结论。
4.3 低价走量背后的真实账本
这种小工具利润其实不高,定价30-100元一份,全靠走量。但我算了一笔账:每次服务只需要写一次脚本,第二次之后就是复制粘贴改个关键词的事,成本几乎为零。一个月卖8份,收入四五百,看着不多,但耗时加起来不到三个小时,时薪不低。
有意思的是,买这种小工具的人,常常也是潜在的高价客户。有个买家下单了图片重命名工具,回头又问我能不能帮他的商品评价做词频统计——直接就转化成了项目一的客户。所以这类低价单,我更愿意把它看作是"获客入口"而不是利润来源。
4.4 免费帮忙的利与弊
给了一个买家定制版本后,我把这个脚本稍微完善了一下,在开头加了注释、做了异常处理。对方很满意,主动在他的同行微信群里帮我推荐了一把,后面连续几天都有人来加好友。副业做到后期,口碑传播比任何推广都管用。
但免费修改也要有个度。我给自己定了个原则:超过30分钟还搞不定的改动,就说明要么需求说不清楚,要么超出原有范围,直接报价,不免费磨。别让"帮个小忙"变成无底洞。
5. 从询单到交单,我总结的6步交付流程
前面的项目讲的是"做什么",这一章讲的是"怎么接"和"怎么交"。很多技术不错的朋友接不到单,问题恰好出在这里。
5.1 需求确认阶段,要钻进客户的脑子里
接单的第一步不是写代码,是问问题。我总结了一份固定的问题清单,每一个新项目都会问一遍:
- 这个数据/文件从哪里来,是公开下载的还是需要登录后台?
- 期望的输出结果长什么样,有没有历史样例?
- 使用频率是每天、每周、还是一次性的?
- 有没有时间要求?比如必须每天早上9点前出结果?
- 跑多久之后会不用了?后续可能要维护吗?
这五个问题问完,我基本就能判断这个单的难度、报价和交付周期。
特别强调一下:"有没有历史样例"这个问题价值千金。与其让客户用语言描述他想要的Excel长什么样子,不如直接让他发我一张旧报表截图,我照着做出一个完全一样的模板,双方确认后再写逻辑。这样沟通成本最低,返工率也最低。
5.2 报价三原则:工时、次数、售后边界
我早期的报价方式是拍脑袋,后来亏过几次才总结出规律。现在报价永远看三个维度:
| 维度 | 说明 | 我的参考标准 |
|---|---|---|
| 开发耗时 | 从技术角度看需要多少时间 | 时薪按50-100元估算 |
| 使用频次 | 客户每天用还是每月用 | 高频使用可以报价更高 |
| 售后边界 | 包多久的修改 | 默认两轮修改,超过收费 |
一个每天都要用、可能用两年的自动化报表,和一次性清洗数据,报价逻辑完全不同。前者看重稳定性,后者看重结果,价值评估标准不一样。
5.3 交付形式比代码本身更影响口碑
我见过不少同行交单就一个压缩包,里面塞了一堆.py文件。客户打开一看完全懵了,然后就开始折腾你。
我的交付物通常是三件套:
- 可执行文件:优先
pyinstaller打包成exe,双击可用 - 使用说明:一份极简的Word文档,图文并茂写清楚怎么用
- 测试数据+示例输出:让客户能直观看到输入什么、得到什么
给客户演示一次再收尾款,效果远好于直接甩代码。因为绝大多数客户不是程序员,他们判断你活干得好的标准很简单——"我点开就能用"。
5.4 收款方式与个人接单的自我保护
我经历过一次做完活对方不回复、人间蒸发的案例。从那以后所有项目都执行同一个规矩:预付50%定金,交付后付尾款。定制开发类项目定金比例甚至提到70%,因为前期需求沟通成本很高。
此外,涉及公司客户时,尽量要求走对公转账,保留聊天记录和需求文档。侧面避免一些"个人接单无合同"的纠纷风险。保护好自己,才能长期做下去。
6. 现在起步的Python副业路线,和我的复盘建议
如果你现在才开始,完全来得及。但路径上有些我踩过的弯路,你们可以绕开。
6.1 环境与工具配置,一次到位最省心
新手最容易在一个地方卡住:环境装不好,代码跑不起来。我的建议是直接装Anaconda,用conda创建独立环境,Python版本选3.10或3.11,这个版本范围内第三方库兼容性最好。
开发环境二选一即可:VSCode轻量,配置好Python插件后写脚本很舒服;PyCharm社区版免费,对初学者更友好,调试功能直观。我个人的选择是VSCode,但如果你追求开箱即用,PyCharm更好。两种我都长期用过,没有孰优孰劣,习惯哪个就用哪个,别再纠结"哪个才是正确选择",赶紧开始写代码才是正经事。
6.2 第一个能变现的小项目怎么选
我的建议是:从你自己或身边人正在干的重复劳动入手。
先别想着去接单,先观察你每天的工作里有没有类似"复制粘贴几百行""每周导一次数据""批量改文件名"这种活。如果有,就拿Python练手把它解决掉。做出第一个能用的工具后,你自然就明白什么叫需求、怎么报价怎么交付。
当时我做评价清洗项目,起因也不是谁找我下单,而是帮一个做电商的朋友看了几个小时的评价数据后,觉得这活能自动化,于是自己用两小时写了第一版。一旦你手里有了一个"能用的东西",后续的客户和口碑会顺着它找上门。
6.3 如果让我重来一次,会从一开始就做的事
我要回头重新做,有几件事一定会在第一天就坚持:
- 每一次交付都留一份模板化的说明文档。后续同类项目直接复制改改,省大量沟通成本。
- 每次项目结束记一页复盘笔记。哪怕是流水账,也能让自己快速回忆起"这类客户最容易在哪一步出幺蛾子"。
- 尽早建立一个自己的使用工具集。把csv处理、Excel合并、文件夹整理这些小脚本统一放在一个项目工程里,参数化封装,随时复用。
这些事短期内看着浪费时间,但它们是让你从"每次从零开始"变成"有积累地越做越快"的分水岭。
最后说句掏心窝的话:Python副业能不能赚到钱,三分靠技术,七分靠你愿不愿意去听别人说话。技术只是你的手艺,真正让你月入5000的,是你能把一个模糊的"我想要个工具"变成具体的、能跑、能用的交付物。这条路不难,但也没有躺赚,动手和复盘永远是第一位的。