文 | 李晓飞
来源:Python 技术「ID: pythonall」
前段时间,被儿子鄙视了,为了找回作为父亲的尊严,我豁出去了,本以为是根硬骨头,结果,太出乎意外了……
因起
去年发现家附近,有个马场,约了下试骑,孩子挺喜欢
这家马场设施齐全,工作人员态度也不错,最重要的是,还可以在线预约,可以省去很多麻烦
经过再三考虑,加上架不住销售的鼓吹,报名了
打算开启孩子的精进之旅,对未来充满着希望
可怜天下父母心呀
障碍
前几次课,体验不错
上完之后,在公众号上一约,才发现事情并非之前想的那样顺利
首先是慢,其次周末太火爆约经常约不上,一打听,大部分家长都是在每一和周二提前把周末的约好了
其次,教练资源每天上午10点放出往后六天的,常常因为工作忘记
更麻烦的是,孩子非得约自己喜欢的教练,这个教练态度温和,水平高超,获奖无数,妥妥的香饽饽,更使约课雪上加霜
接连几个星期都没有约上课,孩子也没法持续训练,对我也有了抱怨之情
我这个做爸爸的,还真无处辩驳……
改变
真的就没有办法了吗?
当然不是,只是有没有将自己逼到必须解决的份上,所谓
置之死地而后生
持续几次之后,有点不耐烦了,突然想到
咱不是会 Python 吗,写个爬虫,自动预约呗
于是利用工作之余琢磨如何实现自动预约
公众号应用
对于公众号应用,实际上是一个普通的 H5 网页,为了安全,会限制只能用微信浏览器访问,以及方便直接用微信登录
实现方式是通过公众号提供的链接转化接口,将普通链接转化为需要微信验证的链接
通过转化后的链接,必须在微信应用的自带浏览器中访问,请求后会获取一些用户的身份信息,比如 Openid,昵称,性别等
这时需要用户来确认是否同意该公众号获取自己的这些信息
当用户同意后,就会跳转到实际的页面里,这时会附带上一些用户的特征信息
这时,访问的就是公众号应用的原始 URL 了
提取链接
微信内置浏览器有个复制链接的功能,可以获取当前页面的 URL
然后在电脑的浏览器中打开,一般就能看到和在微信里访问相同的页面
通过这样的方式,我发现这个公众号的 URL 中有 Openid 信息,应该是做用户识别用的
如果能在电脑浏览器中打开,下面的事情就简单了
编写爬虫
通过浏览器的请求分析功能查看关键操作的请求 (一般按 F12 就可以进入调试模式)
将请求复制为 curl 格式
这样的好处是,复制全请求的全部内容
这时你可能会觉得,应该编写 Python 代码了
确实是可以了,不过将复制的请求内容编写成 Python 语句可不是件容易的事情,如果你这么干过的话,光做引号配对就非常耗时了
好在,我们可以利用在线转化工具,粘贴复制就可搞定,我推荐 https://curl.trillworks.com/ 这个工具
将复制的 curl 格式请求,粘贴在左边,然后选择要转换为的语言,比如 Python
右边瞬间就有了结果
将结果复制出来,会发现大部分编码工作已经完成了
剩下的就是一些小调整了,比如将参数动态化,设置一些逻辑等等
部署
最后将代码做成定时服务,如果有云服务器,写个 crontab 就好了
也可以做成一个定义任务,可以参考这一篇文章 公交闹钟 —— 再也不用白等车了 其中有详细定时任务的制作教程
经过一番折腾,终于为孩子约上了喜欢的教练的课,而且不用每次守着手机无奈的等待,也重新找回了做为父亲的尊严……
总结
很多朋友经常会问,如何学习一门编程语言,又如何利用
其实就是在学中用,用中学,不断地利用学到的技能,解决实际中的问题,甚至创造出一些机会来实践,这便是学习和利用的捷径
之前也写过一些关于应用的文章,请参考,比如
唯有不断地练习,才能快速成长,关注我们,将为您的精进之旅增加强劲的动力
比心
参考
https://curl.trillworks.com/
https://cn.python-requests.org/zh_CN/latest/
http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
【代码获取方式】
识别文末二维码,回复:1024