先说一个真实的数据:
在自由职业(猪八戒网/电鸭社区/Fiverr/Upwork)等平台上,Python相关接单需求在过去两年增长了将近3倍。
单子涵盖的方向非常杂——数据爬取、自动化脚本、数据分析报告、小程序后端、AI接入改造……

但仔细看完上百个已结单的案例,会发现一件事:
大多数高利润的单子,核心代码不超过200行,用到的库不超过5个。
这篇文章梳理出副业场景里出现频率最高的10个Python库,每个库给一个可以直接改造成接单作品的示例。
先说说Python副业有哪些路径
数据爬虫与采集 帮公司抓取竞品价格、采集行业数据、监控舆情信息。这类需求在电商、房产、招聘、金融行业极其常见,一个稳定运行的爬虫脚本,报价几百到几千不等,复杂的长期维护合同可以到万元以上。
自动化办公 帮企业把重复的人工操作变成脚本——批量处理Excel、自动填写表单、定时生成报告、邮件自动发送。这类需求门槛低、客单价中等,但需求量巨大,中小企业几乎每家都有。
数据分析与可视化 帮公司把原始数据变成漂亮的分析报告和图表。会SQL加上会Python数据分析,这个组合在兼职市场非常抢手。
API开发与小程序后端 为独立开发者或小公司写后端接口、搭建小型Web服务。FastAPI、Flask这类框架让Python后端开发的速度极快,一个简单的CRUD接口服务一两天就能交付。
AI功能集成 把大模型API接入现有系统,做智能客服、文档总结、内容生成工具。这类需求在2024年之后爆发式增长,很多传统企业急需但内部没有技术能力,愿意花高价外包。
现在进入正题——这10个库,是做上面这些副业的核心武器库。
TOP 1:Requests——所有网络请求的起点
适用副业: 爬虫、API调用、数据采集
每写一个爬虫、每调一次第三方API,第一行几乎都是import requests。
它把HTTP请求封装得极其简单:一行代码发请求,两行代码拿数据。
一个真实可用的示例:监控商品价格并发送提醒
import requestsimport smtplibfrom email.mime.text import MIMETextimport timedef check_price(url: str, target_price: float): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } response = requests.get(url, headers=headers, timeout=10) # 假设返回JSON格式的价格数据 data = response.json() current_price = data.get("price", 0) print(f"当前价格:¥{current_price}") if current_price <= target_price: send_alert(f"价格降到 ¥{current_price} 了,快去下单!") return True return Falsedef send_alert(message: str): # 用QQ邮箱发提醒(需开启SMTP授权码) msg = MIMEText(message, "plain", "utf-8") msg["Subject"] = "价格提醒" msg["From"] = "your@qq.com" msg["To"] = "your@qq.com" with smtplib.SMTP_SSL("smtp.qq.com", 465) as server: server.login("your@qq.com", "授权码") server.send_message(msg) print("提醒邮件已发送")# 每隔1小时检查一次,降到500元以下就通知while True: if check_price("https://api.example.com/product/123", target_price=500): break time.sleep(3600)这个脚本帮客户监控竞品价格,部署在云服务器上,报价300-500元/月,接维护合同。
TOP 2:Pandas——数据处理的瑞士军刀
适用副业: 数据分析、Excel自动化、报表生成
"帮我把这几百个Excel整合成一份,按部门分类汇总,再算出每个人的绩效分"——这类需求,人工要做好几天,Pandas写100行代码,10秒跑完。
示例:批量合并Excel并生成汇总报表
import pandas as pdfrom pathlib import Pathdef merge_monthly_reports(folder_path: str, output_file: str): """ 合并文件夹里所有月度报表Excel 自动计算每个销售员的总业绩和排名 """ all_data = [] excel_files = list(Path(folder_path).glob("*.xlsx")) print(f"找到 {len(excel_files)} 个Excel文件") for file in excel_files: df = pd.read_excel(file) # 从文件名提取月份 df["月份"] = file.stem all_data.append(df) # 合并所有月份数据 merged = pd.concat(all_data, ignore_index=True) # 按销售员汇总 summary = merged.groupby("销售员").agg( 总销售额=("销售额", "sum"), 订单数量=("订单编号", "count"), 平均客单价=("销售额", "mean") ).round(2) # 按总销售额排名 summary["排名"] = summary["总销售额"].rank(ascending=False).astype(int) summary = summary.sort_values("总销售额", ascending=False) # 导出结果 with pd.ExcelWriter(output_file, engine="openpyxl") as writer: merged.to_excel(writer, sheet_name="明细数据", index=False) summary.to_excel(writer, sheet_name="汇总排名") print(f"汇总完成,共 {len(merged)} 条记录,结果保存至:{output_file}") return summary# 使用result = merge_monthly_reports("./月度报表/", "2025年度汇总.xlsx")print(result.head(10))这类脚本帮中小公司做一次性数据整理,报价200-800元,需求非常密集。
TOP 3:BeautifulSoup4——HTML解析神器
适用副业: 网页数据采集、内容监控
Requests负责把网页下载下来,BeautifulSoup负责把你想要的数据从HTML里挖出来。
示例:采集招聘网站职位信息
import requestsfrom bs4 import BeautifulSoupimport pandas as pdimport timedef scrape_jobs(keyword: str, pages: int = 5) -> pd.DataFrame: """采集某招聘平台的职位信息""" jobs = [] headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)" } for page in range(1, pages + 1): url = f"https://example-jobs.com/search?q={keyword}&page={page}" response = requests.get(url, headers=headers, timeout=10) soup = BeautifulSoup(response.text, "html.parser") # 找到所有职位卡片 job_cards = soup.find_all("div", class_="job-card") for card in job_cards: job = { "职位名称": card.find("h3", class_="job-title").text.strip(), "公司名称": card.find("span", class_="company").text.strip(), "薪资范围": card.find("span", class_="salary").text.strip(), "工作地点": card.find("span", class_="location").text.strip(), "发布时间": card.find("span", class_="date").text.strip(), } jobs.append(job) print(f"第{page}页完成,已采集{len(jobs)}条") time.sleep(2) # 礼貌爬虫,避免给对方服务器造成压力 df = pd.DataFrame(jobs) df.to_excel(f"{keyword}_招聘数据.xlsx", index=False) print(f"采集完成,共{len(df)}条职位信息") return df# 采集Python工程师岗位数据scrape_jobs("Python工程师", pages=10)帮HR公司或猎头采集竞品薪资数据,或者帮求职者做市场分析,这类单子在数据服务平台很常见。
TOP 4:OpenPyXL——Excel深度操控
适用副业: 复杂Excel报表生成、财务自动化
Pandas处理数据,OpenPyXL负责把数据变成有格式、有样式、能直接给老板看的漂亮Excel。
示例:自动生成带格式的月度财务报表
from openpyxl import Workbookfrom openpyxl.styles import Font, PatternFill, Alignment, Border, Sidefrom openpyxl.utils import get_column_letterfrom openpyxl.chart import BarChart, Referenceimport datetimedef create_finance_report(data: list[dict], output_file: str): wb = Workbook() ws = wb.active ws.title = "月度财务报表" # 标题样式 title_font = Font(name="微软雅黑", size=16, bold=True, color="FFFFFF") title_fill = PatternFill(fill_type="solid", fgColor="2E75B6") header_font = Font(name="微软雅黑", size=11, bold=True, color="FFFFFF") header_fill = PatternFill(fill_type="solid", fgColor="4472C4") # 写入标题 ws.merge_cells("A1:F1") ws["A1"] = f"{datetime.date.today().strftime('%Y年%m月')} 财务汇总报表" ws["A1"].font = title_font ws["A1"].fill = title_fill ws["A1"].alignment = Alignment(horizontal="center", vertical="center") ws.row_dimensions[1].height = 35 # 写入表头 headers = ["部门", "预算金额", "实际支出", "差异金额", "完成率", "备注"] for col, header in enumerate(headers, 1): cell = ws.cell(row=2, column=col, value=header) cell.font = header_font cell.fill = header_fill cell.alignment = Alignment(horizontal="center") # 写入数据 for row, item in enumerate(data, 3): ws.cell(row=row, column=1, value=item["部门"]) ws.cell(row=row, column=2, value=item["预算"]) ws.cell(row=row, column=3, value=item["实际"]) ws.cell(row=row, column=4, value=item["实际"] - item["预算"]) ws.cell(row=row, column=5, value=f"{item['实际']/item['预算']*100:.1f}%") ws.cell(row=row, column=6, value=item.get("备注", "")) # 超支标红 if item["实际"] > item["预算"]: for col in range(1, 7): ws.cell(row=row, column=col).fill = PatternFill( fill_type="solid", fgColor="FFE0E0" ) # 自动调整列宽 for col in range(1, 7): ws.column_dimensions[get_column_letter(col)].width = 15 wb.save(output_file) print(f"报表已生成:{output_file}")# 测试数据sample_data = [ {"部门": "市场部", "预算": 50000, "实际": 48000, "备注": "节省了2000"}, {"部门": "技术部", "预算": 80000, "实际": 85000, "备注": "服务器扩容"}, {"部门": "销售部", "预算": 30000, "实际": 28500},]create_finance_report(sample_data, "2025年12月财务报表.xlsx")TOP 5:FastAPI——两天交付一个后端服务
适用副业: API开发、小程序后端、数据服务接口
示例:给小程序提供用户管理接口
from fastapi import FastAPI, HTTPException, Dependsfrom fastapi.middleware.cors import CORSMiddlewarefrom pydantic import BaseModelfrom datetime import datetimeimport uvicornapp = FastAPI(title="小程序后端API", version="1.0.0")# 允许跨域(小程序需要)app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"],)# 数据模型class UserCreate(BaseModel): openid: str nickname: str avatar_url: strclass UserResponse(BaseModel): id: int openid: str nickname: str created_at: datetime# 模拟数据库users_db = {}next_id = 1@app.post("/api/users/login", response_model=UserResponse)async def login_or_register(user: UserCreate): """微信小程序登录/注册""" global next_id if user.openid in users_db: return users_db[user.openid] new_user = { "id": next_id, "openid": user.openid, "nickname": user.nickname, "created_at": datetime.now() } users_db[user.openid] = new_user next_id += 1 return new_user@app.get("/api/users/{openid}", response_model=UserResponse)async def get_user(openid: str): if openid not in users_db: raise HTTPException(status_code=404, detail="用户不存在") return users_db[openid]if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000) # 启动后访问 http://localhost:8000/docs 查看自动生成的接口文档一个完整的后端接口服务,自动生成 Swagger 文档,适合交付给客户自行查看和测试。
TOP 6:Playwright——现代浏览器自动化
适用副业: 复杂表单自动填写、需要登录的网站自动化
Selenium 是上一代工具,Playwright 是现在的选择——更快、更稳定、更好用。
pip install playwrightplaywright install chromium示例:自动登录并批量下载报告
from playwright.sync_api import sync_playwrightimport timedef auto_download_reports(username: str, password: str, save_dir: str): with sync_playwright() as p: browser = p.chromium.launch(headless=False) # headless=True 不显示界面 page = browser.new_page() # 登录 page.goto("https://example-platform.com/login") page.fill("#username", username) page.fill("#password", password) page.click("button[type='submit']") page.wait_for_url("**/dashboard") print("登录成功") # 进入报告页面 page.click("text=数据报告") page.wait_for_selector(".report-list") # 获取所有报告链接 report_links = page.query_selector_all(".report-item a") print(f"找到 {len(report_links)} 份报告") for i, link in enumerate(report_links): # 设置下载路径 with page.expect_download() as download_info: link.click() download = download_info.value download.save_as(f"{save_dir}/报告_{i+1}.pdf") print(f"已下载:报告_{i+1}.pdf") time.sleep(1) browser.close() print(f"全部下载完成,共{len(report_links)}份")auto_download_reports("your_username", "your_password", "./reports")帮公司做自动化运营操作,这类脚本维护合同报价在500-2000元/月。
TOP 7:Schedule——定时任务,让脚本自动跑起来
适用副业: 一切需要"定时执行"的场景
大多数副业脚本需要长期运行,不能手动触发。Schedule 让你用最简单的语法设置定时任务。
import scheduleimport timeimport requestsimport pandas as pdfrom datetime import datetimedef daily_data_collection(): """每天早上8点自动采集数据并生成报告""" print(f"[{datetime.now()}] 开始执行每日数据采集...") # 采集数据 response = requests.get("https://api.example.com/daily-stats") data = response.json() # 追加到历史记录 df_new = pd.DataFrame([data]) try: df_history = pd.read_excel("历史数据.xlsx") df_combined = pd.concat([df_history, df_new]) except FileNotFoundError: df_combined = df_new df_combined.to_excel("历史数据.xlsx", index=False) print(f"[{datetime.now()}] 数据采集完成,共{len(df_combined)}条记录")def weekly_report(): """每周一早上9点生成周报发邮件""" print(f"[{datetime.now()}] 生成周报...") # 生成报表逻辑... print("周报已发送")# 设置定时任务schedule.every().day.at("08:00").do(daily_data_collection)schedule.every().monday.at("09:00").do(weekly_report)print("定时任务已启动,等待执行...")while True: schedule.run_pending() time.sleep(60)部署在云服务器上,月费约20元,这个脚本就能7×24小时自动跑。
TOP 8:Matplotlib / Plotly——让数据会说话
适用副业: 数据可视化报告、商业分析图表
原始数据给客户,客户看不懂;变成图表,谁都能理解。
示例:用 Plotly 生成交互式销售分析图(可嵌入网页)
import plotly.express as pximport plotly.graph_objects as goimport pandas as pd# 示例销售数据data = { "月份": ["1月", "2月", "3月", "4月", "5月", "6月"], "销售额": [128000, 145000, 132000, 168000, 195000, 210000], "目标": [150000, 150000, 150000, 160000, 180000, 200000], "利润率": [18.5, 20.1, 17.8, 22.3, 24.1, 25.6]}df = pd.DataFrame(data)# 双轴图:柱状图显示销售额 vs 目标,折线图显示利润率fig = go.Figure()fig.add_trace(go.Bar( x=df["月份"], y=df["销售额"], name="实际销售额", marker_color="#4472C4"))fig.add_trace(go.Bar( x=df["月份"], y=df["目标"], name="目标销售额", marker_color="#ED7D31", opacity=0.6))fig.add_trace(go.Scatter( x=df["月份"], y=df["利润率"], name="利润率(%)", yaxis="y2", mode="lines+markers", line=dict(color="#FF0000", width=2)))fig.update_layout( title="2025年上半年销售分析", yaxis=dict(title="销售额(元)"), yaxis2=dict(title="利润率(%)", overlaying="y", side="right"), legend=dict(x=0, y=1.1, orientation="h"), template="plotly_white")# 保存为可交互的HTML文件(可直接发给客户,浏览器打开)fig.write_html("销售分析报告.html")# 也可以导出为静态图片fig.write_image("销售分析报告.png", width=1200, height=600)print("图表已生成")帮公司做月度/季度数据可视化报告,单次报价300-1000元,建立长期合作后变成稳定收入。
TOP 9:python-docx——Word文档自动化
适用副业: 批量合同生成、报告模板填充
示例:批量生成客户报价单
from docx import Documentfrom docx.shared import Pt, RGBColor, Cmfrom docx.enum.text import WD_ALIGN_PARAGRAPHimport copydef generate_quotation(template_path: str, client_data: dict, output_path: str): """根据模板批量生成报价单""" doc = Document(template_path) # 替换文档中的占位符 replacements = { "{{客户名称}}": client_data["company"], "{{联系人}}": client_data["contact"], "{{日期}}": client_data["date"], "{{有效期}}": client_data["valid_until"], "{{总金额}}": f"¥{client_data['total']:,.2f}", } for paragraph in doc.paragraphs: for placeholder, value in replacements.items(): if placeholder in paragraph.text: for run in paragraph.runs: if placeholder in run.text: run.text = run.text.replace(placeholder, value) # 填充报价明细表格 if len(doc.tables) > 0: table = doc.tables[0] for item in client_data["items"]: row = table.add_row() row.cells[0].text = item["name"] row.cells[1].text = str(item["quantity"]) row.cells[2].text = f"¥{item['unit_price']:,.2f}" row.cells[3].text = f"¥{item['quantity'] * item['unit_price']:,.2f}" doc.save(output_path) print(f"报价单已生成:{output_path}")# 批量为100个客户生成报价单clients = [ { "company": "上海XX科技有限公司", "contact": "李总", "date": "2025-12-01", "valid_until": "2025-12-31", "total": 58800, "items": [ {"name": "系统开发服务", "quantity": 1, "unit_price": 50000}, {"name": "部署实施", "quantity": 1, "unit_price": 5000}, {"name": "技术支持(年)", "quantity": 1, "unit_price": 3800}, ] }, # 更多客户...]for client in clients: output = f"报价单_{client['company']}.docx" generate_quotation("报价单模板.docx", client, output)帮保险、金融、B2B销售公司批量生成合同和报价单,这类脚本一次性报价500-1500元,需求非常稳定。
TOP 10:OpenAI / Anthropic SDK——AI功能集成
适用副业: AI工具开发、智能客服、内容生成系统
现在市场上最热门的需求之一:帮客户把 AI 接进他们现有的系统。
from openai import OpenAIimport pandas as pdclient = OpenAI(api_key="your-api-key")def batch_content_generator(product_list: list[dict]) -> pd.DataFrame: """ 批量为电商商品生成营销文案 适合帮助中小电商卖家的副业场景 """ results = [] for i, product in enumerate(product_list): print(f"正在生成第{i+1}/{len(product_list)}个商品文案:{product['name']}") response = client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "system", "content": "你是一位专业的电商文案写手,擅长写出吸引买家、突出商品卖点的营销文案。" }, { "role": "user", "content": f"""请为以下商品生成一段营销文案(100字左右):商品名称:{product['name']}主要卖点:{product['features']}目标客群:{product['target']}价格区间:{product['price']}要求:口语化,突出痛点,有行动引导。 """ } ], max_tokens=300 ) results.append({ "商品名称": product["name"], "生成文案": response.choices[0].message.content, "Token消耗": response.usage.total_tokens }) df = pd.DataFrame(results) df.to_excel("批量文案.xlsx", index=False) print(f"\n全部完成!共生成{len(results)}条文案") return df# 测试products = [ {"name": "人体工学椅", "features": "腰部支撑、头枕可调、久坐不累", "target": "程序员/设计师", "price": "1500-2000元"}, {"name": "无线降噪耳机", "features": "主动降噪、30小时续航、快充", "target": "通勤族/学生", "price": "800-1200元"},]batch_content_generator(products)帮电商卖家批量生成产品文案、标题,按商品数量收费,几百个商品报价500-2000元,边际成本趋近于零。
最后说一句
这10个库里,你只需要精通其中3-4个,就够接大多数副业单子了。
推荐的入门组合:
- 数据方向:Requests + BeautifulSoup4 + Pandas + Matplotlib
- 自动化方向:Playwright + OpenPyXL + python-docx + Schedule
- 开发方向:FastAPI + Requests + Pandas + OpenAI SDK
不需要全部学完再去接单。
很多人的第一个单子,靠的就是一个 Pandas 脚本帮人整理 Excel,收了300块钱,然后逐渐开始接更复杂的需求,收入一步步涨上去。
开始比完美更重要。
你现在会用哪几个库?有没有用 Python 接过副业单子?评论区聊聊。