這才是使用Python的正確姿勢!

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

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

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

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

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


【代碼獲取方式】
