爬取微信小程序上海天文馆可购票数

背景:最近想去上海天文馆玩,但是门票一出来就被抢空了,写个脚本爬一下门票什么时候有,没接wxpy,有兴趣可以加进去,当票数>0时给自己微信发提醒消息。

import requests
import urllib
import time
from requests.packages.urllib3.exceptions import InsecureRequestWarning

#requests 移除SSL认证,输出InsecureRequestWarning提示的取消方法
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)


if __name__ == "__main__":

    freeday_date = "2021-11-06"

    url = "https://ticket.sstm.org.cn"
    path = "/vendor/reserve/getReservedateListByStadiumId.xhtml"

	#Charles抓包获取请求参数	
    post_form_data = {
        "stadiumId": 69001,
        "appId": "wx1d7ddce169710ba7"
    }

	#mpsessid抓包看header里的,猜测是账户相关
    header = {
        "mpsessid":"xxxxxxxxxx",
        "content-type":"application/x-www-form-urlencoded",
        "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.16(0x18001026) NetType/WIFI Language/zh_CN"
    }

    session = requests.session()

    #返回本周的门票数据列表
    def send_request():
        tickets_result = session.post(url + path,data=urllib.parse.urlencode(post_form_data),headers=header,verify=False).json()
        return tickets_result["data"]["resultList"]

    times = 0

    while True:
        tickets_list = send_request()
        for item in tickets_list:
            if item["reservedate"] == freeday_date:
              target_ticket = item["avaiablenum"]
              #计数
              times += 1
              print("第{}次请求,{}日上海天文馆可购票数:".format(times,freeday_date) + str(item["avaiablenum"]))
        time.sleep(5)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值