Python可自动完成竞品官网价格抓取、清洗、历史对比与趋势标记:安装requests/beautifulsoup4/pandas/openpyxl/schedule,配置URL与CSS选择器,编写fetch_price函数(含超时与清洗),追加存储至Excel,生成含↑↓标记的latest_comparison.csv,并每日9点定时执行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要每天手动刷新多个竞品官网页面,比对价格变动,复制粘贴到Excel里再做差值计算——现在用Python自动完成网页报价抓取、结构化清洗、历史对比和趋势标记,全程无需人工干预。
安装依赖与配置基础环境
打开命令行,执行 pip install requests beautifulsoup4 pandas openpyxl schedule ——这四个包缺一不可,【requests 用于发起HTTP请求,若跳过会导致后续所有爬取失败】。
新建一个 Python 文件,命名为 price_monitor.py,把以下三行写在最开头:
import requests
from bs4 import BeautifulSoup
import pandas as pd
定义目标竞品URL与选择器
方法一:直接硬编码(适合固定3~5个竞品)
在代码中新增字典变量:
targets = {
"阶跃AI官网": {"url": "https://stepai.com/pricing", "selector": ".price-card .price-value"},
"智谱AI": {"url": "https://www.zhipu.ai/pricing", "selector": "div.pricing-table span.price"},
"月之暗面": {"url": "https://www.moonshot.cn/pricing", "selector": "section[data-testid='pricing'] .number"}
}
方法二:从 external_urls.csv 读取(适合动态增删竞品)
准备一个 CSV 文件,首行为 url,selector,name,内容示例:
https://stepai.com/pricing,".price-card .price-value","阶跃AI官网"
https://www.zhipu.ai/pricing,"div.pricing-table span.price","智谱AI"
然后在代码中插入:
df_urls = pd.read_csv("external_urls.csv")
targets = {row["name"]: {"url": row["url"], "selector": row["selector"]} for _, row in df_urls.iterrows()}
编写核心爬取与解析函数
第一步:定义 fetch_price 函数,接收单个 target 字典,返回 (名称, 当前价格, 时间戳) 元组
第二步:用 requests.get(url, timeout=10) 获取页面,【必须加 timeout=10,否则某个网站响应慢会卡死整个流程】
第三步:用 BeautifulSoup(html, "html.parser") 解析,再调用 soup.select(selector) 提取所有匹配元素
第四步:对提取结果做清洗:去除空格、过滤掉非数字字符(如¥、/月、USD),只保留首个有效数字;若无匹配项,返回 None
第五步:返回 (name, float(cleaned_price), pd.Timestamp.now())
存储与比对历史数据
每次运行后,把新数据追加写入 price_history.xlsx,用 pandas.to_excel(mode="a", if_sheet_exists="overlay") 实现追加(注意:openpyxl 引擎才支持该模式)
读取已有 price_history.xlsx 的最后一条记录,按 name 分组,取出各竞品最新价格;与本次结果逐个比对,生成 change 列:上涨标 ↑,下跌标 ↓,持平不标
将本次完整结果(含 change 列)保存为 latest_comparison.csv,覆盖旧文件——这个文件就是你每天晨会打开的第一张表
设置每日定时执行
在文件末尾添加:
import schedule
import time
def job():
run_all() # 假设你已把前面逻辑封装成 run_all() 函数
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(60)
双击运行 price_monitor.py,程序将在后台持续监听,每天上午9点自动触发全量抓取

















