You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将网页爬取信息发送至Discord Webhook?

解决Discord Webhook推送库存信息的问题

首先先帮你修正现有代码里的语法错误:你的导入语句把三个模块写在一行却没加逗号,这会直接导致代码运行失败。正确的导入应该分开写:

from bs4 import BeautifulSoup
import requests
import json

接下来咱们一步步实现把库存状态发送到Discord Webhook的功能。Discord Webhook接受POST请求,需要特定格式的JSON payload。下面是完整的修正版代码,我会给你拆解关键部分:

from bs4 import BeautifulSoup
import requests
import json

# 替换成你自己的Discord Webhook链接(从服务器设置的集成里创建)
DISCORD_WEBHOOK_URL = "你的Webhook地址"
TARGET_PRODUCT_URL = "http://www.jimmyjazz.com/mens/footwear/adidas-superstar/S82215?color=Brown"

def check_product_stock():
    try:
        # 获取商品页面源码
        source = requests.get(TARGET_PRODUCT_URL).text
        soup = BeautifulSoup(source, 'lxml')
        size_container = soup.find('div', class_='box_wrapper')
        
        if not size_container:
            # 处理找不到尺码区域的异常情况
            send_to_discord("⚠️ 库存检查失败:页面中找不到尺码选择模块")
            return
        
        size_links = size_container.find_all('a')
        has_in_stock = False
        
        # 遍历所有尺码,判断是否有可购买的选项
        for link in size_links:
            # 用get方法避免找不到class属性时报错
            if "piunavailable" not in link.get("class", []):
                has_in_stock = True
                break
        
        # 构造要发送的消息内容
        if has_in_stock:
            message_content = f"✅ 商品有库存啦!\n商品链接:{TARGET_PRODUCT_URL}"
        else:
            message_content = f"❌ 商品暂时缺货\n商品链接:{TARGET_PRODUCT_URL}"
        
        # 推送消息到Discord
        send_to_discord(message_content)
        
    except Exception as e:
        # 捕获所有异常,把错误信息推送到Discord方便排查
        error_message = f"❌ 库存监控脚本出错:{str(e)}"
        send_to_discord(error_message)

def send_to_discord(content):
    # 构造Discord接受的JSON格式数据
    webhook_payload = {
        "content": content,
        # 可选:自定义机器人的用户名和头像,不需要可以删掉这两行
        "username": "库存监控小助手",
        "avatar_url": "https://example.com/robot-avatar.png"
    }
    
    try:
        # 发送POST请求到Webhook地址
        response = requests.post(DISCORD_WEBHOOK_URL, json=webhook_payload)
        # 检查请求是否成功,失败则抛出异常
        response.raise_for_status()
        print("消息已成功推送到Discord")
    except requests.exceptions.RequestException as e:
        print(f"推送消息失败:{str(e)}")

# 运行库存检查逻辑
if __name__ == "__main__":
    check_product_stock()

关键细节说明:

  • 异常处理:添加了try-except块,能捕获页面请求失败、元素找不到等问题,避免脚本直接崩溃,还能把错误信息推给你
  • Webhook适配:send_to_discord函数专门处理Discord的推送逻辑,完全符合Discord Webhook的格式要求
  • 库存判断优化:只要找到一个可购买的尺码就停止遍历,提升效率;用link.get("class", [])避免找不到class属性时报错
  • 可读性优化:把代码拆分成两个函数,逻辑更清晰,后续维护也方便

必做事项:

  1. 把DISCORD_WEBHOOK_URL替换成你自己的Discord服务器Webhook链接(在服务器设置→集成→Webhooks里创建)
  2. 确保你的Python环境安装了beautifulsoup4和requests,没装的话运行pip install beautifulsoup4 requests
  3. 如果网站有反爬机制,可以给requests.get添加headers参数(比如headers={"User-Agent": "Mozilla/5.0..."})避免被拦截

内容的提问来源于stack exchange,提问作者Nathan Gorham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:36:02