医院一号难求?Python抢号报警器帮小姐姐抢号~

共 1171字,需浏览 3分钟

 ·

2020-04-08 23:27



f1a4ecd063e4677831625ad2fddbb60c.webp

作者 | 星安果
来源 | AirPython

1. 场景

最近有一位小姐姐向我抱怨,说她家宝宝最近要打预防针,受疫情影响,市区定点的社康医院太少,导致预约号基本靠抢,根本是一号难求

每次预约都要一直守在手机旁,不停地刷新页面去抢号,太耽误功夫了,问我有没有办法帮到她?

141ad52fee9c248723c741890a0bf037.webp

我分析了一下,功能入口是在微信服务号内部,如果使用 自动化 去抢号,效率会很低,抢号成功率会大减。

因此,我决定花 10 分钟,用 Python 写一段爬虫!

2. 实现步骤

首先,我们在手机端配置手动代理,打开 Charles 或 FD,打开手机的放号界面,进行一次抓包操作

94a48ee45862d272999a107ff0326930.webp

分析界面发出的请求及响应数据,右键复制 cURL 到剪切板

e78dfdcec50bacd7b1a795537543dcdd.webp

然后,使用下面这个网址将 cURL 转为一段完整的 Python 请求代码,包含:请求头、Cookies 等

https://curl.trillworks.com/

8c4176c6a8a4a816171c695ac7a280ec.webp

接着,将代码复制到 Pycharm 中,根据第一步抓包获取的数据结构,遍历数据,找出有余号、并且最近的社康医院

result = json.loads(response.text)

ym_datas = result.get('data').get('list')

foo = False

# 遍历每一个社康
for ym_item in ym_datas:
    # 地址
    address = ym_item.get('outpAddress')
    # 社康名字
    ym_name = ym_item.get('outpName')

    # 状态,是否有号
    status = ym_item.get('status')

    if status == '1' and ym_name in choices:
        foo = True
        break
    else:
        pass

最后,一旦发现有指定的社康医院有号放出,立马发出一个 警告语音提醒

# 发出预警(Mac)
def raise_alarm(voice):
    """
    发出警报(Mac)
    :param voice:
    :return:
    """

    os.system('say %s' % voice)


# 发出预警(PC)
def raise_alarm(voice):
    """
    发出警报(PC)
    :param voice:
    :return:
    """

    import winsound
    winsound.Beep(5001000)

3. 最后

上面我们只做了一个余票查询的爬虫,大家根据教程可扩展成:先查询后抢票的功能。

关于抢票功能就暂不演示,大家自行扩展,相信这样完全可以帮助小姐姐解决抢号难的问题。

- End -

浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报