在开始编写监控脚本之前,必须先配置好Python运行环境。本指南基于Python 3.8版本编写,兼容性最佳。请前往Python官网下载对应操作系统的安装包,安装时务必勾选"Add Python to PATH"选项,这能避免后续手动配置环境变量的麻烦。
安装完成后,打开命令行工具(Windows下为Win+R输入cmd,Mac下为Terminal),输入以下命令安装必要的第三方库。这些库分别用于发送网络请求、解析网页数据、执行定时任务和发送邮件。
pip install requests beautifulsoup4 schedule
如果下载速度过慢,建议使用国内镜像源进行安装:
pip install requests beautifulsoup4 schedule -i https://pypi.tuna.tsinghua.edu.cn/simple
安装成功后,保留命令行窗口备用,后续将直接在此运行脚本。
淘宝拥有严格的反爬机制,直接通过代码访问会被直接拦截。为了模拟真实用户访问,必须从浏览器中获取Cookie和User-Agent。这是脚本能否成功运行的关键步骤,请严格按照以下顺序操作。
1. 使用Chrome浏览器打开淘宝网,并登录你的账号。
2. 在浏览器地址栏输入目标商品的URL,例如某款女王节促销商品的详情页。
3. 按下F12键打开开发者工具,点击顶部的"Network"(网络)标签页。
4. 刷新页面(F5),在Network列表中找到第一个请求(通常是商品ID.htm),点击选中。
5. 在右侧出现的Headers选项卡中,向下滚动找到Request Headers部分。
6. 复制完整的Cookie值(一长串字符串)和User-Agent值。
注意:Cookie具有时效性,如果脚本运行一段时间后报错提示登录失效,只需按照上述步骤重新获取Cookie并替换即可。
新建一个名为monitor.py的文件,使用记事本或VS Code打开。我们将分模块编写代码,实现获取网页、提取价格和判断逻辑。
导入刚才安装的库并设置基础变量。将第二步获取的Cookie和User-Agent填入下方代码的对应位置。
```python import requests from bs4 import BeautifulSoup import schedule import time import smtplib from email.mime.text import MIMEText from email.utils import formataddr 配置区域 URL = "https://detail.tmall.com/item.htm?id=这里填入商品ID" COOKIE = "这里填入你复制的完整Cookie" USER_AGENT = "这里填入你复制的User-Agent" TARGET_PRICE = 200.00 设置你期望的心理价位 ```
淘宝网页源码中,价格通常包含在特定的Class属性中。以下函数通过请求网页源码,使用BeautifulSoup库解析HTML结构,从而提取出当前的标价。
```python def get_current_price(): headers = { "Cookie": COOKIE, "User-Agent": USER_AGENT, "Referer": URL } try: response = requests.get(URL, headers=headers) response.raise_for_status() 检查请求是否成功 soup = BeautifulSoup(response.text, 'html.parser') 注意:淘宝DOM结构可能变动,这里使用常见的价格类名 如果抓取不到,需检查网页源码更新选择器 price_tag = soup.find('span', class_='tm-price') if price_tag: price_str = price_tag.get_text().strip().replace('¥', '').replace(',', '') return float(price_str) else: print("未找到价格标签,可能需要更新解析逻辑或Cookie失效") return None except Exception as e: print(f"获取价格出错: {e}") return None ```当价格低于设定值时,我们需要脚本自动发送邮件通知。这里以QQ邮箱为例,演示如何配置SMTP服务。
1. 登录QQ邮箱,进入"设置" -> "账户"。
2. 找到"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务",开启"IMAP/SMTP服务"。
3. 按照提示发送短信后,系统会生成一个授权码,请务必复制保存,这个授权码就是后续代码中的邮箱密码。
在monitor.py文件中追加以下邮件发送函数:
```python def send_email(price): my_sender = '你的QQ@qq.com' 发件人邮箱账号 my_pass = '刚才生成的授权码' 发件人邮箱密码(授权码) my_user = '你的QQ@qq.com' 收件人邮箱账号,自己发给自己 try: msg = MIMEText(f'淘宝女王节好价预警!\n商品链接:{URL}\n当前价格:{price}\n目标价格:{TARGET_PRICE}', 'plain', 'utf-8') msg['From'] = formataddr(["淘宝监控助手", my_sender]) msg['To'] = formataddr(["", my_user]) msg['Subject'] = "价格跌破预警价!" server = smtplib.SMTP_SSL("smtp.qq.com", 465) server.login(my_sender, my_pass) server.sendmail(my_sender, [my_user,], msg.as_string()) server.quit() print("邮件发送成功") except Exception as e: print(f"邮件发送失败: {e}") ```我们需要将上述功能串联起来,并设置定时任务。为了不频繁请求淘宝导致IP被封,建议设置每30分钟检查一次。
在monitor.py文件末尾添加主程序逻辑:
```python def job(): print(f"开始检查价格... {time.strftime('%Y-%m-%d %H:%M:%S')}") price = get_current_price() if price: print(f"当前价格: ¥{price}") if price <= TARGET_PRICE: print(f"价格达标!发送预警邮件。") send_email(price) 发送后可以选择暂停监控或继续 else: print("价格未达标,继续监控。") 定时任务:每30分钟执行一次 schedule.every(30).minutes.do(job) if __name__ == '__main__': print("监控脚本已启动,正在等待...") 先执行一次 job() while True: schedule.run_pending() time.sleep(1) ```代码编写完毕后,回到命令行窗口,进入monitor.py所在的目录,执行以下命令启动脚本:
python monitor.py
看到"监控脚本已启动"的提示后,脚本即进入后台运行模式。窗口会实时打印每次检查的结果。如果此时商品价格发生变动并低于目标价,你的QQ邮箱将立即收到预警邮件。
常见问题排查:
通过以上步骤,你已成功构建了一个自动化的淘宝女王节价格监控系统。这套逻辑不仅适用于淘宝,稍加修改Selector和Headers即可应用于京东、拼多多等其他电商平台,实现真正的高效抢购辅助。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图