Python之百度AI Studio积分商店(兑吧)积分商品监控脚本

2022-02-14 22:04
首先对积分兑换页面进行抓包,拿到积分商品的请求数据
请求头
headers部分即为请求数据

之后编写监控脚本

# 导入所需的库
# 爬虫相关库
from bs4 import BeautifulSoup # 网页解析,获取数据
import json # json数据处理
import requests # 爬虫请求
import time # 时间库
import random # 生成随机数
# 邮件发送所需的库
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 线程控制相关库
import threading
from threading import Timer

# 爬取函数
def get_url():
    url = "***" # 根据抓包数据填写url和headers
    headers = {***}
    response = requests.get(url, headers=headers) # 发起请求
    text = response.text # 保存响应数据
    return text # 返回响应数据

# 邮件发送函数
def e_mail(mail_title):
    host_server = 'smtp.qq.com'  # q邮箱smtp服务器
    sender_qq = '***@qq.com' # 发件人邮箱
    pwd = '***' # qq邮箱授权码

    receiver = '***@qq.com' # 收件人邮箱 多个用['a','b']格式
    mail_content = "——本邮件来自你的《兑吧商品监控系统》"+"\n"+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #邮件正文内容

    # 初始化一个邮件主体
    msg = MIMEMultipart()
    msg["Subject"] = Header(mail_title,'utf-8')
    msg["From"] = sender_qq
    msg['To'] = ";".join(receiver)

    # 邮件正文内容
    msg.attach(MIMEText(mail_content,'plain','utf-8'))

    # ssl登录
    smtp = SMTP_SSL(host_server)
    smtp.login(sender_qq,pwd)

	# 发送邮件
    smtp.sendmail(sender_qq,receiver,msg.as_string())

    smtp.quit() # 结束SMTP会话

# 数据处理及监控函数
def times():
    c = random.randint(3,15) # 生成随机数3-15

    global start_time
    lock.acquire()

    text = get_url()
    text = json.loads(text, strict=False)  # 解析响应数据 加载json方法为非标准格式
    data = text['data']
    count = data['count']  # 商品数
    list = data['list']  # 商品列表
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
    for a in range(int(data['count'])): # 遍历商品列表
        # print(list[a])
        print(list[a]['title'] + ' ' + list[a]['titleDownTxt'] + ' ' + list[a]['tagText'].replace(',#aaa', ''))
        if list[a]["tagClasses"] == "outofstock": # 根据标签判断
            pass
        else:
            e_mail(list[a]['title'] + ' ' + list[a]['titleDownTxt'] + '已补货,请尽快兑换!') # 发送邮件提醒
        a += 1
    print('\n')

    lock.release()
    t = Timer(c, times)  # 随机执行 反反爬
    t.start()

if __name__ == '__main__':
    lock = threading.Lock() # 线程锁防止运行报错
    times()

最后使用 Pyinstaller -F 监控脚本.py 命令将脚本打包为exe可执行文件
运行截图

posted @ 2022-06-02 14:45  Haibara-Z3r0  阅读(153)  评论(0编辑  收藏  举报