“一户一墩”,手把手教你用Python抢冰墩墩

简说Python

共 2903字,需浏览 6分钟

 · 2022-02-15

大家好,我是老表~

最近几天冰墩墩超级火,火到什么程度呢?朋友圈天天都是冰墩墩可爱照片,公众号都是教编程画冰墩墩的,视频号都是冬奥视频,到处冰墩墩,最直接的体现还得数:各大电商平台根本抢不到冰墩墩周边玩偶。

上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搞了个基金查询机器人,还可以拓展!

推荐10个好用到爆的Jupyter Notebook插件

Python批量处理Excel数据后,导入SQL Server

如何找到我

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报