GPT-5.5 + 代理IP 实战:搭建竞品监控Agent完整教程

Sophia
Sophia
IP网络与数据研究员

GPT-5.5 发布后,不少开发者开始尝试将它的 Agent 能力落地到实际项目中。本文分享一个比较典型的应用场景:用 GPT-5.5 API 搭配住宅IP,搭建一个能自动监控竞品价格并生成报告的 Agent。

本文假设你对 GPT-5.5 的 Agent 基础能力已有了解(如果没有,可以先阅读我们的GPT-5.5 Agent)。我们将直接从代码入手,逐步完成一个可运行的演示项目。


目录


项目概述:我们要搭建什么?

功能目标

最终成品是一个 Python 脚本,能够:

  1. 定时访问竞品页面,抓取指定商品的价格
  2. 通过 GPT-5.5 API 解析页面内容(不依赖固定的 HTML 选择器)
  3. 将结果写入 CSV 文件,方便后续分析

整体架构

定时触发
   ↓
Python 主脚本
   ↓
代理IP服务(动态住宅IP)
   ↓
目标竞品页面
   ↓
GPT-5.5 API 解析内容
   ↓
结果写入 CSV

为什么这个项目适合用 GPT-5.5 + 代理IP?

竞品页面通常有一定的反爬措施。如果直接从本地 IP 高频访问,较容易触发限制。代理IP 在这里的作用是分散请求来源,降低被拦截的概率。而 GPT-5.5 的优势在于:它可以根据页面内容灵活提取信息,即使目标网站的 HTML 结构发生变化,也不太需要手动调整解析逻辑。


准备工作:环境和账号配置

Step 0:获取 GPT-5.5 API 访问权限

你需要一个可用额度充足的 OpenAI API Key。可以在 OpenAI 官方平台 注册并申请。

官方文档:https://platform.openai.com/docs

Step 1:安装 Python 依赖

本项目需要以下库:

pip install openai requests pandas
  • openai:调用 GPT-5.5 API
  • requests:发送 HTTP 请求
  • pandas:处理结果并写入 CSV

Step 2:代理IP服务接入配置

本项目使用动态住宅IP。原因是:竞品监控属于高频采集场景,每次请求轮换 IP 有助于降低单一地址的请求密度。

IPWeb 后台购买或开通代理资源后,通常可以拿到以下连接信息:

  • 代理服务器地址(host)
  • 端口(port)
  • 用户名和密码(或 IP 白名单验证)

下面是一个将代理配置到 requests 会话中的示例:

import requests

# 代理配置(示例,请替换为你的实际信息)
proxy_host = "gate1.ipweb.cc"
proxy_port = "7778"
proxy_user = "your_username"
proxy_pass = "your_password"

proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"

proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

# 测试代理是否生效
try:
    test_res = requests.get(
        "https://api.ipify.org?format=json",
        proxies=proxies,
        timeout=10
    )
    print("当前代理IP:", test_res.json())
except Exception as e:
    print("代理连接失败:", e)

核心代码实现(分步讲解)

Step 3:封装一个带代理IP的 HTTP 请求函数

先封装一个带有重试机制的请求函数,后续的页面抓取都通过它来完成。

import requests
import time
from typing import Optional

def fetch_page(url: str, proxies: dict, max_retries: int = 3) -> Optional[str]:
    """
    通过代理IP获取页面内容,带重试逻辑
    """
    for attempt in range(max_retries):
        try:
            response = requests.get(
                url,
                proxies=proxies,
                timeout=15,
                headers={
                    "User-Agent": (
                        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                        "AppleWebKit/537.36 (KHTML, like Gecko) "
                        "Chrome/120.0.0.0 Safari/537.36"
                    )
                }
            )
            response.raise_for_status()
            return response.text
        except requests.exceptions.RequestException as e:
            print(f"第 {attempt + 1} 次请求失败:{e}")
            if attempt < max_retries - 1:
                time.sleep(2 * (attempt + 1))  # 简单退避
    return None

说明:实际项目中,可能需要更完善的重试策略(例如根据 HTTP 状态码区分处理方式)。此处保持代码简洁,便于理解核心流程。

Step 4:让 GPT-5.5 解析竞品页面内容

传统爬虫通常依赖固定的 CSS 选择器来提取价格信息,一旦目标网站改版就会失效。GPT-5.5 的推理能力可以在一定程度上缓解这个问题。

from openai import OpenAI
from typing import Optional

# 初始化客户端(请替换为你的 API Key)
client = OpenAI(api_key="your_openai_api_key")

def extract_price_with_gpt(html_content: str, product_name: str) -> Optional[str]:
    """
    将页面HTML传给GPT-5.5,让其提取指定商品的价格
    """
    prompt = f"""
    以下是某个电商页面的HTML内容片段。
    请从中找出「{product_name}」的价格,只返回数字部分(例如 299.00)。
    如果找不到,返回 "NOT_FOUND"。

    HTML内容(已截断):
    {html_content[:4000]}
    """

    try:
        response = client.chat.completions.create(
            model="gpt-5.5",  # 请确认你的API账号支持此模型名称
            messages=[{"role": "user", "content": prompt}],
            temperature=0.0,
        )
        result = response.choices[0].message.content.strip()
        return result if result != "NOT_FOUND" else None
    except Exception as e:
        print(f"GPT-5.5 API 调用失败:{e}")
        return None

Step 5:定时执行 + 结果写入表格

将前面的组件组合起来,形成完整的主流程:

import pandas as pd
from datetime import datetime
import time

# 竞品列表(示例,请替换为真实URL)
products = [
    {"name": "竞品A-无线耳机", "url": "https://example.com/product/A"},
    {"name": "竞品B-无线耳机", "url": "https://example.com/product/B"},
]

def run_monitoring(proxies: dict):
    results = []
    for product in products:
        print(f"正在抓取:{product['name']}")
        html = fetch_page(product["url"], proxies)
        if not html:
            print("  抓取失败,跳过")
            continue

        price = extract_price_with_gpt(html, product["name"])
        results.append({
            "产品": product["name"],
            "价格": price if price else "获取失败",
            "时间": datetime.now().strftime("%Y-%m-%d %H:%M"),
            "来源URL": product["url"]
        })
        time.sleep(3)  # 礼貌性延迟

    # 写入CSV
    df = pd.DataFrame(results)
    df.to_csv(
        "price_monitor.csv",
        mode="a",
        header=not __import__('os').path.exists("price_monitor.csv"),
        index=False,
        encoding="utf-8-sig"
    )
    print(f"本轮共记录 {len(results)} 条数据,已写入 price_monitor.csv")

if __name__ == "__main__":
    # 代理配置(与上文 Step 2 相同的配置)
    proxy_host = "gate1.ipweb.cc"
    proxy_port = "7778"
    proxy_user = "your_username"
    proxy_pass = "your_password"

    proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
    proxies = {
        "http": proxy_url,
        "https": proxy_url,
    }

    # 测试代理连接
    try:
        test = requests.get("https://api.ipify.org?format=json",
                          proxies=proxies, timeout=10)
        print("代理IP:", test.json().get("ip"))
    except Exception as e:
        print("警告:代理连接测试失败,请检查配置", e)

    run_monitoring(proxies)

动态住宅IP vs 静态住宅IP:代码层面如何切换?

本教程使用的是动态住宅IP(每次请求可轮换地址)。如果你监控的网站需要登录后才能查看价格,则可能需要改用静态住宅IP(会话期间 IP 保持不变,避免触发异地登录风控)。

切换方式通常比较简单,以某代理服务为例:

# 动态住宅IP(每次请求轮换)
proxy_url_dynamic = "http://user:pass@gate1.ipweb.cc:7778"

# 静态住宅IP(会话期间保持同一IP)
# 许多代理服务商通过 session 参数实现,具体语法请参考对应官方文档
proxy_url_static = "http://user:pass@gate1.ipweb.cc:7778?session=my_session_001"

扩展:这个框架还能做什么?

本文的代码示例是一个比较通用的「Agent + 代理IP + 网页解析」框架,只需调整 prompt 和部分参数,就可以扩展到其他场景:

  • 舆情监控:让 GPT-5.5 从抓取的社交媒体内容中提取情感倾向
  • SEO 排名追踪:结合代理IP模拟不同地区用户的搜索结果
  • 多网站聚合监控:扩展 products 列表,一次性追踪多个信息源

FAQ

Q:GPT-5.5 API 如何获取?
A:可以在 OpenAI 官网注册账号并申请 API 访问权限,具体支持的模型名称以官方文档为准。

Q:Python 中如何配置代理IP?
A:可以在 requests 库的 proxies 参数中填入代理地址,格式通常为 http://用户名:密码@代理地址:端口

Q:这个代码可以直接用于生产环境吗?
A:本文代码以演示思路为主,生产使用前建议增加更完善的错误处理、日志记录和安全措施。

Q:请求超时或失败,应该怎么排查?
A: 目标网站的响应速度、代理IP的质量,都可能影响请求成功率。除了代码中的简单重试,还可以对不同类型的异常分别处理,例如超时、HTTP 4xx、HTTP 5xx 等,并记录失败日志,方便后续分析。

Q:GPT-5.5 API 限流时,如何控制调用频率?
A:如果监控的竞品数量较多,需要注意 OpenAI API 的每分钟请求数(RPM)限制。可以在循环中加入 time.sleep(),或者采用更精细的速率控制方案,例如令牌桶算法。

Q:目标网站改版后,GPT-5.5 还能自动解析价格吗?
A:在一定程度上可以。但如果页面结构变化较大,GPT-5.5 的解析效果可能会下降。实际使用中,建议定期检查输出结果的质量,必要时调整 prompt 或增加后处理逻辑。


结语

本文演示了如何将 GPT-5.5 的推理能力和代理IP结合起来,搭建一个具有一定自适应能力的竞品监控工具。这个项目还有不少可以完善的地方,例如更健壮的错误处理、更精细的代理IP调度策略、以及更低的 token 消耗方案。

如果你在生产环境中打算长期使用这类方案,代理IP的稳定性和并发能力会比较关键,建议在实际部署前做充分测试。

Sophia
Sophia
IP网络与数据研究员

Sophia 拥有 8+ 年 IP 代理与数据采集相关经验,长期关注 IP 信誉数据、网络连通性与异常流量判定,并将检测流程做成可批量、可记录、可复盘的工程化方案。

服务领域
全球 IP 资源与配置 数据采集与自动化工程 网络隐私与风控研究

你可能感兴趣

Canva AI 2.0 国内用不了完整版?海外住宅代理IP 是解锁关键

Canva AI 2.0 国内用不了完整版?海外住宅代理IP 是解锁关键

你打开 Canva,想试试 AI 2.0 刚上线的对话式设计,结果网页直接跳到了 canva.cn;好不容易找到 AI 生图入口,点了却没反应——这不是你的操作问题,而是地区限制在起作用。 2026年...

Sophia

Sophia

IP网络与数据研究员

Claude Opus 4.7 开发者使用指南:API调用方法与网络优化方案

Claude Opus 4.7 开发者使用指南:API调用方法与网络优化方案

2026年4月16日,Anthropic正式发布了其最新一代旗舰大模型Claude Opus 4.7。这是自今年2月发布Opus 4.6以来,Anthropic在不到两个月内的又一次重大更新。新版本在...

Sophia

Sophia

IP网络与数据研究员

安卓手机安装ChatGPT完整教程

安卓手机安装ChatGPT完整教程

ChatGPT 的安卓官方 App 早已上线 Google Play 商店,但对于国内用户来说,安装过程仍然涉及网络环境、账号注册、手机兼容性等多个环节。本文将从准备工作讲起,覆盖 Google Pl...

Sophia

Sophia

IP网络与数据研究员

准备好开始使用了吗?

严格反滥用

禁止欺诈、自动化操作及违规用途

企业级服务

仅面向合法商业与技术使用场景

风控与限制

异常行为可触发限制或终止服务

合规数据使用

数据获取与使用需符合相关法规

隐私保护优先

严禁采集或滥用个人敏感信息

所有服务均需遵守《使用政策》