我花 1 分鐘寫了一段爬蟲,幫助小姐姐解放了雙手
1. 場(chǎng)景
最近有一位小姐姐向我抱怨,說她家寶寶最近要打預(yù)防針,受疫情影響,市區(qū)定點(diǎn)的社康醫(yī)院太少,導(dǎo)致預(yù)約號(hào)基本靠搶,根本是一號(hào)難求
每次預(yù)約都要一直守在手機(jī)旁,不停地刷新頁面去搶號(hào),太耽誤功夫了,問我有沒有辦法幫到她?
我分析了一下,功能入口是在微信服務(wù)號(hào)內(nèi)部,如果使用 自動(dòng)化 去搶號(hào),效率會(huì)很低,搶號(hào)成功率會(huì)大減。
因此,我決定花 1 分鐘,用 Python 寫一段爬蟲!
2. 實(shí)現(xiàn)步驟
首先,我們?cè)谑謾C(jī)端配置手動(dòng)代理,打開 Charles 或 FD,打開手機(jī)的放號(hào)界面,進(jìn)行一次抓包操作
分析界面發(fā)出的請(qǐng)求及響應(yīng)數(shù)據(jù),右鍵復(fù)制 cURL 到剪切板
然后,使用下面這個(gè)網(wǎng)址將 cURL 轉(zhuǎn)為一段完整的 Python 請(qǐng)求代碼,包含:請(qǐng)求頭、Cookies 等
https://curl.trillworks.com/
接著,將代碼復(fù)制到 Pycharm 中,根據(jù)第一步抓包獲取的數(shù)據(jù)結(jié)構(gòu),遍歷數(shù)據(jù),找出有余號(hào)、并且最近的社康醫(yī)院
- result = json.loads(response.text)
- ym_datas = result.get('data').get('list')
- foo = False
- # 遍歷每一個(gè)社康
- for ym_item in ym_datas:
- # 地址
- address = ym_item.get('outpAddress')
- # 社康名字
- ym_name = ym_item.get('outpName')
- # 狀態(tài),是否有號(hào)
- status = ym_item.get('status')
- if status == '1' and ym_name in choices:
- foo = True
- break
- else:
- pass
最后,一旦發(fā)現(xiàn)有指定的社康醫(yī)院有號(hào)放出,立馬發(fā)出一個(gè) 警告語音提醒
- # 發(fā)出預(yù)警(Mac)
- def raise_alarm(voice):
- """
- 發(fā)出警報(bào)(Mac)
- :param voice:
- :return:
- """
- os.system('say %s' % voice)
- # 發(fā)出預(yù)警(PC)
- def raise_alarm(voice):
- """
- 發(fā)出警報(bào)(PC)
- :param voice:
- :return:
- """
- import winsound
- winsound.Beep(500, 1000)
3. 最后
通過上面幾步操作,相信不需要 1 分鐘,就能寫出一段爬蟲,幫助小姐姐解決搶號(hào)難的問題。
如果你覺得文章還不錯(cuò),請(qǐng)大家點(diǎn)贊分享下。你的肯定是我最大的鼓勵(lì)和支持。