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