這才是使用Python的正確姿勢(shì)!

文 | 李曉飛
來源:Python 技術(shù)「ID: pythonall」

前段時(shí)間,被兒子鄙視了,為了找回作為父親的尊嚴(yán),我豁出去了,本以為是根硬骨頭,結(jié)果,太出乎意外了……
因起
去年發(fā)現(xiàn)家附近,有個(gè)馬場(chǎng),約了下試騎,孩子挺喜歡
這家馬場(chǎng)設(shè)施齊全,工作人員態(tài)度也不錯(cuò),最重要的是,還可以在線預(yù)約,可以省去很多麻煩
經(jīng)過再三考慮,加上架不住銷售的鼓吹,報(bào)名了
打算開啟孩子的精進(jìn)之旅,對(duì)未來充滿著希望
可憐天下父母心呀
障礙
前幾次課,體驗(yàn)不錯(cuò)
上完之后,在公眾號(hào)上一約,才發(fā)現(xiàn)事情并非之前想的那樣順利
首先是慢,其次周末太火爆約經(jīng)常約不上,一打聽,大部分家長(zhǎng)都是在每一和周二提前把周末的約好了
其次,教練資源每天上午10點(diǎn)放出往后六天的,常常因?yàn)楣ぷ魍?/p>
更麻煩的是,孩子非得約自己喜歡的教練,這個(gè)教練態(tài)度溫和,水平高超,獲獎(jiǎng)無數(shù),妥妥的香餑餑,更使約課雪上加霜
接連幾個(gè)星期都沒有約上課,孩子也沒法持續(xù)訓(xùn)練,對(duì)我也有了抱怨之情
我這個(gè)做爸爸的,還真無處辯駁……
改變
真的就沒有辦法了嗎?
當(dāng)然不是,只是有沒有將自己逼到必須解決的份上,所謂
置之死地而后生
持續(xù)幾次之后,有點(diǎn)不耐煩了,突然想到
咱不是會(huì) Python 嗎,寫個(gè)爬蟲,自動(dòng)預(yù)約唄
于是利用工作之余琢磨如何實(shí)現(xiàn)自動(dòng)預(yù)約
公眾號(hào)應(yīng)用
對(duì)于公眾號(hào)應(yīng)用,實(shí)際上是一個(gè)普通的 H5 網(wǎng)頁,為了安全,會(huì)限制只能用微信瀏覽器訪問,以及方便直接用微信登錄
實(shí)現(xiàn)方式是通過公眾號(hào)提供的鏈接轉(zhuǎn)化接口,將普通鏈接轉(zhuǎn)化為需要微信驗(yàn)證的鏈接
通過轉(zhuǎn)化后的鏈接,必須在微信應(yīng)用的自帶瀏覽器中訪問,請(qǐng)求后會(huì)獲取一些用戶的身份信息,比如 Openid,昵稱,性別等
這時(shí)需要用戶來確認(rèn)是否同意該公眾號(hào)獲取自己的這些信息
當(dāng)用戶同意后,就會(huì)跳轉(zhuǎn)到實(shí)際的頁面里,這時(shí)會(huì)附帶上一些用戶的特征信息
這時(shí),訪問的就是公眾號(hào)應(yīng)用的原始 URL 了
提取鏈接
微信內(nèi)置瀏覽器有個(gè)復(fù)制鏈接的功能,可以獲取當(dāng)前頁面的 URL

然后在電腦的瀏覽器中打開,一般就能看到和在微信里訪問相同的頁面
通過這樣的方式,我發(fā)現(xiàn)這個(gè)公眾號(hào)的 URL 中有 Openid 信息,應(yīng)該是做用戶識(shí)別用的
如果能在電腦瀏覽器中打開,下面的事情就簡(jiǎn)單了
編寫爬蟲
通過瀏覽器的請(qǐng)求分析功能查看關(guān)鍵操作的請(qǐng)求 (一般按 F12 就可以進(jìn)入調(diào)試模式)
將請(qǐng)求復(fù)制為 curl 格式

這樣的好處是,復(fù)制全請(qǐng)求的全部?jī)?nèi)容
這時(shí)你可能會(huì)覺得,應(yīng)該編寫 Python 代碼了
確實(shí)是可以了,不過將復(fù)制的請(qǐng)求內(nèi)容編寫成 Python 語句可不是件容易的事情,如果你這么干過的話,光做引號(hào)配對(duì)就非常耗時(shí)了
好在,我們可以利用在線轉(zhuǎn)化工具,粘貼復(fù)制就可搞定,我推薦 https://curl.trillworks.com/ 這個(gè)工具
將復(fù)制的 curl 格式請(qǐng)求,粘貼在左邊,然后選擇要轉(zhuǎn)換為的語言,比如 Python
右邊瞬間就有了結(jié)果

將結(jié)果復(fù)制出來,會(huì)發(fā)現(xiàn)大部分編碼工作已經(jīng)完成了
剩下的就是一些小調(diào)整了,比如將參數(shù)動(dòng)態(tài)化,設(shè)置一些邏輯等等
部署
最后將代碼做成定時(shí)服務(wù),如果有云服務(wù)器,寫個(gè) crontab 就好了
也可以做成一個(gè)定義任務(wù),可以參考這一篇文章 公交鬧鐘 —— 再也不用白等車了 其中有詳細(xì)定時(shí)任務(wù)的制作教程
經(jīng)過一番折騰,終于為孩子約上了喜歡的教練的課,而且不用每次守著手機(jī)無奈的等待,也重新找回了做為父親的尊嚴(yán)……
總結(jié)
很多朋友經(jīng)常會(huì)問,如何學(xué)習(xí)一門編程語言,又如何利用
其實(shí)就是在學(xué)中用,用中學(xué),不斷地利用學(xué)到的技能,解決實(shí)際中的問題,甚至創(chuàng)造出一些機(jī)會(huì)來實(shí)踐,這便是學(xué)習(xí)和利用的捷徑
之前也寫過一些關(guān)于應(yīng)用的文章,請(qǐng)參考,比如
唯有不斷地練習(xí),才能快速成長(zhǎng),關(guān)注我們,將為您的精進(jìn)之旅增加強(qiáng)勁的動(dòng)力
比心
參考
https://curl.trillworks.com/ https://cn.python-requests.org/zh_CN/latest/ http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
PS:公號(hào)內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計(jì)劃!
老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點(diǎn)一下,如果感覺文章內(nèi)容不錯(cuò)的話,記得分享朋友圈讓更多的人知道!


【代碼獲取方式】
