首页
/ 3分钟上手!用Scrapegraph-ai实现电商价格实时监控

3分钟上手!用Scrapegraph-ai实现电商价格实时监控

2026-02-04 05:05:23作者:殷蕙予

你是否还在手动刷新电商页面比价?是否因错过限时折扣而懊悔?本文将带你用Scrapegraph-ai构建自动化价格监控系统,3行核心代码即可实现商品价格的实时追踪与变动提醒,让你轻松掌握购物决策主动权。

为什么选择Scrapegraph-ai做价格监控?

Scrapegraph-ai是一款基于大型语言模型(LLM)的智能网页抓取框架,它通过直观的自然语言指令,自动生成抓取规则并提取结构化数据。与传统爬虫相比,它具有三大优势:

  1. 零代码配置:无需编写XPath或CSS选择器,用自然语言描述需求即可
  2. 多源适配:支持HTML、JSON、PDF等10+格式,兼容99%主流电商平台
  3. 智能抗反爬:内置动态内容处理和代理轮换机制,extras/proxy_rotation.py

Scrapegraph-ai架构

快速开始:15行代码实现价格监控

环境准备

首先通过PyPI安装最新版本:

pip install scrapegraphai

如需本地模型支持(如无API密钥),需额外安装Ollama:

# 安装Ollama(以Linux为例)
curl https://ollama.ai/install.sh | sh
ollama pull mistral  # 下载基础模型

核心监控代码

创建price_monitor.py文件,粘贴以下代码:

from scrapegraphai.graphs import SmartScraperGraph
from datetime import datetime
import time

def track_price(product_url, interval=300):
    # 配置本地LLM模型
    graph_config = {
        "llm": {
            "model": "ollama/mistral",
            "temperature": 0,
            "format": "json",
            "base_url": "http://localhost:11434",
        },
        "embeddings": {
            "model": "ollama/nomic-embed-text",
            "base_url": "http://localhost:11434",
        }
    }
    
    # 初始化监控器
    scraper = SmartScraperGraph(
        prompt="提取当前商品价格、名称和促销信息",
        source=product_url,
        config=graph_config
    )
    
    # 持续监控逻辑
    previous_price = None
    while True:
        result = scraper.run()
        current_price = float(result['price'].replace('¥', '').replace(',', ''))
        
        # 价格变动检测
        if previous_price and current_price < previous_price:
            print(f"🚨 价格下降: ¥{previous_price} → ¥{current_price}")
            # 此处可添加邮件/短信通知逻辑
        
        previous_price = current_price
        print(f"[{datetime.now()}] 价格: ¥{current_price} | 商品: {result['name']}")
        time.sleep(interval)

# 启动监控(以示例商品URL为例)
track_price("https://example.com/product/123", interval=300)  # 每5分钟检查一次

关键技术解析

1. 智能价格提取原理

Scrapegraph-ai的价格提取能力源于SmartScraperGraph组件,它通过以下流程工作:

graph TD
    A[用户输入URL] --> B[FetchNode获取页面]
    B --> C[LLM分析DOM结构]
    C --> D[生成提取规则]
    D --> E[ParseNode提取价格]
    E --> F[返回结构化数据]

核心节点实现可见:

2. 反爬机制突破

电商网站通常会设置反爬措施,Scrapegraph-ai通过多种策略应对:

  • 动态内容加载:使用ChromiumLoader执行JavaScript,获取渲染后页面
  • 请求头随机化:自动生成浏览器指纹,避免被识别为机器人
  • 速率限制控制:通过interval参数调节请求频率,默认5分钟/次

高级功能扩展

多商品批量监控

通过SmartScraperMultiGraph实现多URL同时监控:

from scrapegraphai.graphs import SmartScraperMultiGraph

urls = [
    "https://example.com/product/123",
    "https://example.com/product/456"
]

scraper = SmartScraperMultiGraph(
    prompt="提取所有商品的价格和名称",
    sources=urls,
    config=graph_config
)
results = scraper.run()  # 返回包含所有商品数据的列表

历史价格趋势分析

结合CSV存储实现价格波动可视化:

import csv

def save_to_csv(data, filename="price_history.csv"):
    with open(filename, 'a', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=data.keys())
        writer.writerow(data)

# 在track_price函数中添加
save_to_csv({
    "time": datetime.now(),
    "product": result['name'],
    "price": current_price
})

部署与自动化

Docker容器化部署

项目提供官方Docker配置,一键部署监控服务:

git clone https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai
cd Scrapegraph-ai
docker-compose up -d  # 使用docker-compose.yml配置

定时任务设置

通过systemd设置后台运行(Linux系统):

# /etc/systemd/system/price-monitor.service
[Unit]
Description=Scrapegraph-ai Price Monitor

[Service]
ExecStart=/usr/bin/python3 /path/to/price_monitor.py
Restart=always

[Install]
WantedBy=multi-user.target

注意事项与最佳实践

  1. 合规性检查:使用前通过robots_node.py检查网站爬虫协议
  2. API密钥管理:生产环境建议使用环境变量存储密钥:
    import os
    graph_config = {
        "llm": {
            "api_key": os.getenv("OPENAI_API_KEY"),
            # ...其他配置
        }
    }
    
  3. 监控频率设置:避免短时间高频请求,建议间隔≥300秒

总结与进阶学习

本文介绍的基础监控系统已能满足个人用户需求,如需企业级应用,可进一步探索:

完整API文档可参考官方手册,更多示例代码见examples目录。立即开始你的智能价格监控之旅吧!

提示:点赞收藏本文,关注作者获取"价格监控系统高级版"(含可视化面板+邮件告警)完整代码!

登录后查看全文
热门项目推荐
相关项目推荐