娱乐
innertext(50 行代码搭建“价格抄底 Agent”,暴跌瞬间自动发微信提醒。)

在价格战里,手速就是利润

兄弟们,在这个“内卷”的时代,信息差就是钱。

  • 做电商的:竞品凌晨 3 点把价格调低了 5 块钱,你第二天早上才发现,流量全跑了。
  • 想买大件的:显卡/手机价格像过山车,你总是在山顶站岗,错过史低价。

以前我们用 Python 写爬虫,最头疼的是什么? 是写 XPath 和正则! 网站前端随便改个 Class 名,爬虫就挂了,还得连夜修代码。

今天,我们换个玩法。
我们要用Python + Playwright(浏览器自动化)+ AI Agent(智能提取)这一套组合拳

️ 核心思路:Agent 的“鹰眼”系统

  1. 眼睛(剧作家):打开网页,截取核心区域的文本或 HTML。
  2. 大脑(LLM - DeepSeek/OpenAI):从乱七八糟的代码中精准提取“当前价格”、“优惠券”和“库存状态”。
  3. 嘴巴(通知):发现价格低于设定值,或者检测到“价格跳水”,立刻报警。

依赖安装:


    pip install playwright langchain langchain-openai scheduleplaywright install  # 安装浏览器内核  

实战代码:打造“价格狙击手”

我们跳过复杂的类封装,直接上最核心的“AI 智能解析”逻辑。 哪怕网站改版,只要价格还在页面上,AI 就能认出来!


    import timeimport schedulefrom playwright.sync_api import sync_playwrightfrom langchain_openai import ChatOpenAIfrom langchain.prompts import promptTemplate# === 1. 配置区域 ===# 目标商品链接 (这里以某电商链接为例)TARGET_URL = "https://www.example.com/product/iphone-16-pro"# 你的心理预期价位TARGET_PRICE = 7999 # 配置 LLM (推荐用 DeepSeek V3 或 GPT-4o-mini,便宜快)llm = ChatOpenAI(    model="deepseek-chat",     api_key="sk-xxxxxx",     base_url="https://api.deepseek.com",    temperature=0)# === 2. 获取网页内容的函数 (眼睛) ===def fetch_page_content(url):    with sync_playwright() as p:        # 启动无头浏览器        browser = p.chromium.launch(headless=True)        page = browser.new_page()        # 伪装成正常用户        page.set_extra_http_headers({"User-Agent": "Mozilla/5.0..."})                print(f"️ 正在潜入页面: {url} ...")        page.goto(url, wait_until="domcontentloaded")        time.sleep(3) # 等待动态内容加载                # 这里有个骚操作:只获取 body 的文本,或者特定区域的 HTML        # 我们可以去掉 script 和 style 标签,节省 Token        content = page.evaluate("""() => {            return document.body.innerText;         }""")        browser.close()        return content[:5000] # 截取前 5000 字符防止 Token 爆炸# === 3. AI 智能分析 (大脑) ===def analyze_price(content):    prompt = promptTemplate.from_template("""    你是一个电商价格分析专家。下面是网页的原始文本内容:        {raw_text}        请从中提取以下信息:    1. 商品名称    2. 当前价格 (提取纯数字)    3. 库存状态 (有货/无货)        并根据价格判断:    如果价格 <= {target_price},返回 "BUY";否则返回 "WAIT"。        请以 JSON 格式返回,例如:    {{"name": "iPhone 16", "price": 8999, "status": "In Stock", "action": "WAIT"}}    """)        chain = prompt | llm    print(" AI 正在分析价格数据...")    response = chain.invoke({"raw_text": content, "target_price": TARGET_PRICE})    return response.content# === 4. 主任务逻辑 ===def job():    try:        # 1. 抓取        raw_text = fetch_page_content(TARGET_URL)        # 2. 分析        result_json = analyze_price(raw_text)                print(f" 分析结果: {result_json}")                # 3. 这里的 result_json 是字符串,实际使用可以用 json.loads 转字典        if "BUY" in result_json:            print(" 价格达到预期!立即下单!发送报警!")            # 这里调用发送邮件/钉钉/微信的代码        else:            print(" 价格还没到位,继续蹲守...")                except Exception as e:        print(f"❌ 出错啦: {e}")# === 5. 定时执行 ===# 每 30 分钟检查一次schedule.every(30).minutes.do(job)print(" 价格监控 Agent 已启动")job() # 先跑一次试试while True:    schedule.run_pending()    time.sleep(1)  

为什么这个方案比传统爬虫强?

大家看这一段 prompt(提示词):

"从中提取... 当前价格 (提取纯数字)..."

这就是降维打击。

  • 传统爬虫:你必须写P-box-V3 。 明天网站只要把 soup.find('div', class_='price-box-v2')价格框-V2 改成 ,你的爬虫就瞎了。
  • 人工智能代理:它读的是文本语义。 不管前端怎么改 Class,只要人类能看懂那是价格,AI 就能看懂。极大地降低了维护成本!



进阶玩法:加上“趋势分析”

光看当前价格还不够,我们要让 AI 帮我们做决策

我们可以把每次抓取的价格存入 CSV 文件,然后让 Agent 结合历史数据进行分析:

Agent 的思考逻辑(prompt):


    “这是该商品过去 7 天的价格数据:[99, 98, 99, 95, 80, 80, 85]。今天的价格是 85。请分析:这是反弹趋势吗?现在适合入手吗?还是应该再等等?”  

AI 会回答你:

“⚠️ 警告:虽然今天比上周便宜,但对比昨天的 80 元已经反弹 5 元,建议观察是否会回落,暂不建议追高。”

这才是真正的私人理财顾问


顶一下()     踩一下()

热门推荐

发表评论
0评