大家好,我是石璞东。
今年元旦,我要和王璐瑶去北京看德云社的演出,所以需要购买两张德云社小园子的门票,按照网上的说法,官方渠道只有大麦网一家,而且元旦期间黄牛抢票肯定异常激烈,对于我这么一个又穷、手速又慢(顺便@一下研究生院,咳咳咳,奖学金和助学金该发了哈,交表那么积极,就是不给钱)的人来说,只能握住最后一根救命稻草了,那就是代码咯~
对的,你没看错,我们这次不去凑12306的热闹了,我们来搞一下大麦网。
工欲善其事,必先利其器,要实现某个网站抢票过程的自动化,我们必须对目标网站有足够清晰的了解,请看分析。
大麦网网站分析
大麦网网址:https://www.damai.cn/
同大部分主流网站一样,游客模式下,用户只能浏览网站的相关信息,如果需要进行买票等交互式操作,用户需要通过规定形式进行网站的登陆。
这里我们选择 扫码登录(请确保你的手机端已经安装 大麦 应用程序,并处于登陆状态),登陆之后我们打开浏览器控制台,选中 Application 选项卡,在控制台左侧 Storage 菜单中选中 Cookies 菜单,查看登陆成功之后的 Cookies 信息
我们知道,结合我们的上述需求,我们必须处于用户登陆状态下才可以进行后续选票、选座、核对订单、支付等操作,在游客模式下无法进行上述任何操作。
关于大麦网,这里插一句题外话,这几天我在重新写我大三时候爬过的网站的相关案例,最为深刻的感受就是:网站更新太快了,用一句话来形容爬虫与反爬虫,就是 道高一尺,魔高一丈,而类似大麦网、猫眼电影这些网站,他们的反爬措施几乎为零,我也是很纳闷呀,难道大麦网、猫眼电影等觉得他们的数据信息毫无价值吗?还是说他们的服务器能够承受得住这些流氓爬虫所带来的流量呢?甚至是说,他们已经非常大度了,犯不着去跟这些小蜘蛛计较呢?
抢票过程思路分析
- 用户登录
通过上述对登陆状态与游客模式的分析,我们知道,要想顺利完成抢票的全过程,我们首先要做的第一步就是获取用户登陆的Cookies,并保证抢票过程始终处于登陆状态下;
- 选择节目
当我们登陆之后,在输入框中输入关键词 德云社,进入到德云社各个小园子演出信息的列表详情页面中:
此时我们即可选择想要观看的演出场次,这里会有两种可能:
- 无票(票被抢完了)
该页面有一个显著的特点,会存在一个 提交缺货登记 的按钮,在该情况下,我们要做的就是不断请求目标页面,直到有新的演出票信息放出,即 提交缺货登记 按钮被替换成其他与购票相关的按钮(即第二种可能性中所提及的 选座购买 按钮)。
- 有票
该页面有一个显著的特点,就是页面中会有 选座购买 按钮,在该情况下,我们要做的就是在选择好日期、场次和票档之后,点击 选座购买 进入到 座位选择 页面。
- 选座购买
大麦网只允许个人同时购买不超过2张演出票,该页面有一个显著的特点就是会有一个 确认选座 按钮,所以自动程序要帮助我们完成的就是,当用户选择好自己想要的位置之后,自动点击 确认选座 按钮,进入到 确认订单 页面;
- 确认订单
当我们点击 确认选座 按钮之后,我们会进入到 确认订单 页面,受限于网速的影响,我们判断该页面是否加载完成的依据就是是否出现 观演人信息,当相关信息加载完成之后,我们就可以点击页面底部的 同意以上协议并提交订单 按钮提交咯。
- 支付页面
进入到支付页面之后,我们同样需要等待网页完成加载,其判断标准就是 是否出现支付二维码,即上图网页源代码中所框选的id为container的div标签是否被渲染出来,若已经完成渲染,则代表已经抢票成功,用户所需要做的就是点击按钮并完成付款,如果没有出现,则重新开始下一轮的抢票。
好的,以上就是大麦网抢票的一个整体流程,小伙伴们学会了吗?快来梳理一下思路吧,在下一篇文章中,我们将介绍完成此案例必备的一些基础知识要点。
写在最后
为方便读者了解更为详细的信息,我为小伙伴们提供了三个我的官方渠道:
- hahaCoder(微信公众号)
- hahaAI(微信小程序)
- hahaWebsite. (个人网站)