“一户一墩”,手把手教你用Python抢冰墩墩
共 2903字,需浏览 6分钟
·
2022-02-15 06:33
大家好,我是老表~
最近几天冰墩墩超级火,火到什么程度呢?朋友圈天天都是冰墩墩可爱照片,公众号都是教编程画冰墩墩的,视频号都是冬奥视频,到处冰墩墩,最直接的体现还得数:各大电商平台根本抢不到冰墩墩周边玩偶。
上Github搜索:冰墩墩,还有各式各样教你画冰墩墩的源码。
个人做喜欢的还是明佬在群内分享的3d版本,简单明了、可爱高端,想要源码和运行方法的可以在公众号「简说Python」回复:冰墩墩 。
不过,画的再好也比不过真实的,所以,本文将给大家分享另一个开源项目:淘宝抢购脚本,项目作者Charles
也在自己公众号分享了项目代码介绍文章:听说最近冰墩墩很火?那就带大家写个抢购脚本吧!
项目代码地址:https://github.com/CharlesPikachu/DecryptLogin/blob/master/examples/taobaosnap/taobaosnap.py
如果无法正常访问github,可以在公众号「简说Python」回复:冰墩墩 获取源码云盘下载地址。
本文主要手把手教大家如何把这个脚本跑起来~感谢开源本项目的作者Charles
,这里也说下,这个作者开源的库DecryptLogin
超级优秀,可以用来模拟登录一些常用的网站,之后我们就可以方便的利用代码实现自动化操作、爬虫,或者像今天要分享的抢购脚本(下回再给大家分享如何使用~)。
1、准备环境
1.1 基础环境-Python
首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。
如果你还没有安装,可以参考以下文章:
如果仅用Python来处理数据、爬虫、数据分析或者自动化脚本、机器学习等,建议使用Python基础环境+jupyter即可,安装使用参考Windows/Mac 安装、使用Python环境+jupyter notebook
如果想利用Python进行web项目开发等,建议使用Python基础环境+Pycharm,安装使用参考 :Windows下安装、使用Pycharm教程,这下全了 和 Mac下玩转Python-安装&使用Python/PyCharm 。
我本地用的Python 3.10.0
,然后使用pipenv
管理虚拟环境,关于pipenv
的使用大家可以看我用Pipenv来管理项目环境,大写的爽。
1.2 创建虚拟环境,安装项目依赖
打开终端/CMD后,按下面指令,一行一行执行:
进入项目目录 /Users/xks/Desktop/Project/crawler
,创建一个新项目目录bdd_tb
,然后进入bdd项目目录,新建一个.venv
文件夹,后面存放虚拟环境。
cd /Users/xks/Desktop/Project/crawler && mkdir bdd_tb
cd bdd_tb && mkdir .venv
输入下面指令,即可创建一个虚拟环境,虚拟环境相关文件默认会存放到 .venv
文件夹中,创建好后,建议修改下Pipfile
中的pip下载源,具体操作看Pipenv管理项目虚拟环境教程。
pipenv install
输入下面指令,首先进入虚拟环境,然后安装第三方依赖包。
pipenv shell
pipenv install pyttsx3 DecryptLogin requests prettytable
注意啦,这个终端/CMD先不要关,下载好代码后继续在这里运行代码。
2、获取项目代码
可以在公众号「简说Python」回复:冰墩墩 获取源码云盘下载地址,注意,将下载好的源码文件放入到项目文件夹bdd_tb
中。
bdd_tb
├── .venv # 虚拟环境存放目录
├── Pipfile # 虚拟环境配置文件
├── Pipfile.lock # 虚拟环境配置文件
├── bdd_tb.py # 项目代码文件
└── cookie_cache.pkl # 运行项目后,会先要求扫码登录淘宝,登录后会自动生成
3、简单看下源码
整个代码主要分为3部分(不包括前面导包部分):启动命令行参数解析、淘宝抢购脚本、运行。
启动命令行参数解析
我们可以看到,作者主要提供了两个参数interval
(抢购商品时查询商品是否可以购买的时间间隔),key
(Server酱的key,一种微信消息提醒服务)。
其中interval
是项目运行时必须指定的参数,理论上interval
值越小越好,但是太小,单位时间内请求次数过多,也有被封的风险,所以最好的方法是,等到预售开始前1分钟(或者半分钟)去启动程序,interval
设置到一个自己觉得ok的值,注意单位是秒。
淘宝抢购脚本
作者全部写在TaobaoSnap
类中,主要包含了整个抢购流程和逻辑实现,包括:登录、选择抢购商品、抢购等功能实现。
4、运行项目
必要条件: 运行项目前,你需要将想抢购的商品加入到自己的购物车中(购物车中不要有太多商品)。
打开终端/CMD,进入项目目录,然后进入虚拟环境。
cd /Users/xks/Desktop/Project/crawler/bdd_tb
pipenv shell
在虚拟环境下,输入下面代码运行项目,我指定的interval
为2s(我大概是预售前20s左右启动的程序):
python bdd_tb.py --interval 2
启动成功后,会弹出一个二维码,利用手机淘宝扫码登录即可,登录成功后,会在终端/CMD中打印出你的购物车商品名称列表,输入你要抢购商品对应的id即可开启抢购,如下图所示。
抢购成功后,会输入内容提示,作者还设置了电脑语音提示,非常贴心了~
5、最后聊聊
看了上面的运行截图,你可能会问我:你抢到冰墩墩了吗?没有。
确实运行输出和语音都有提示我:抢购成功,已提交订单;但是我前往淘宝的时候,代付款中却没有。
代码应该没问题(测试过其他商品),感觉是官方设置的:订单为付款减库存,下单不占库存
引起的,我打开淘宝准备付款的时候,已经有2000个人在我之前付款了,所以没有库存 自然也就不会出现在待付款中了。
目前比较好的方法就是:在开启抢购的同时自己打开待付款,不停刷新,代码下单后,可以及时人工进行付款。或者后面研究下,能不能加个自动付款的~
欢迎大家在评论区交流自己的想法,码字不易,欢迎点赞 在看 转发 留言支持。
再次感谢Charles开源本项目,“本项目仅供Python爱好者学习使用,若作者发现该项目以任何不正当方式被使用,将立即删除该项目”。
坚持 and 努力 :终有所获。
好的,那么下期见,我是爱猫爱技术,更爱思思的老表⁽⁽ଘ( ˙꒳˙ )ଓ⁾⁾
近期阅读学习推荐:
Python批量处理Excel数据后,导入SQL Server
如何找到我: