备战618!用Python脚本帮你实现淘宝秒杀
作者:数量技术宅 发布时间:2022-05-15 04:43:40
selenium 安装与 chromedriver安装
我们前文提到,Python脚本中使用了selenium库,而selenium又通过chromedriver来控制浏览器的鼠标点击等操作。所以,我们的第一步,是正确的安装与配置selenium以及chromedriver。
selenium的安装很简单,与其他Python三方库一样,我们直接用pip安装。
pip install selenium
chromedriver的安装,首先,chromedriver的版本很关键,我们需要选择的chromedriver版本,一定要与Chrome的版本一致。因此, 我们需要查看Chrome版本,在浏览器中输入chrome://version/
这个示例中Chrome的版本是 72.0.3626, 我们再到以下两个网站的其中之一,去下载对应版本的chromedriver。
1、http://chromedriver.storage.googleapis.com/index.html
2、https://npm.taobao.org/mirrors/chromedriver/
下载完成后,解压压缩包,找到chromedriver.exe复制到chrome的安装目录(其实也可以随便放一个文件夹)。复制chromedriver.exe文件的路径并加入到电脑的环境变量中去。具体的:
进入环境变量编辑界面,添加到用户变量即可,双击PATH,将文件位置(例如我们的是 C:\Program Files (x86)\Google\Chrome\Application\)添加到后面。
完成安装后,我们到cmd界面, 输入chromedriver,如果下方给出了chromedriver的版本号,说明已经安装成功。
我们再通过Python库selenium,来调用chromedriver,以此来简单测试chromedriver的功能。如果我们未配置环境变量,可用如下代码进行测试
from selenium import webdriver
import time
def main():
chrome_driver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe' #chromedriver的文件位置
b = webdriver.Chrome(executable_path = chrome_driver)
b.get('https://www.google.com')
time.sleep(5)
b.quit()
if __name__ == '__main__':
main()
而如果我们已经配置好了环境变量,可以通过另一端代码来进行测试
from selenium import webdriver
import time
def main():
b = webdriver.Chrome()
b.get('https://www.baidu.com')
time.sleep(5)
b.quit()
if __name__ == '__main__':
main()
核心模块代码解析
安装、配置完selenium与chromedriver之后,我们就可以开始编写秒杀脚本的核心逻辑了。核心逻辑,我们通过封装函数来实现各个步骤。
第一步,启动chromedriver,并登陆淘宝。这里需要注意的是,我们通过控制chromedriver打开淘宝主页,进入到登陆界面后,需要手工扫码进行登陆。这一步骤无法做到全自动。
第二步,登陆后,我们仍然是通过chromedriver控制,进入购物车界面,并设定一个60秒的定时刷新,即每隔60秒刷新一遍购物车界面,使得我们的淘宝账户保持在登陆状态。直到当前的时间与我们所设定宝贝的抢购时间相差小于100秒,再进入下一步。
第三步,通过chromedriver选中购物车全部商品,将本地时间与淘宝服务器时间校准,以淘宝服务器返回时间作为标准时间,一旦淘宝时间到达我们抢购的时间,立即从购物车提交订单。此时有两种情况,如果我们提交订单的任务发送的太早,提交订单按钮还没有出现,此时我们重复提交订单步骤,一直到按钮出现;另一种情况,提交订单按钮在我们发送提交请求的时候已经可用了,那么直接提交成功。
第四步,付款,由于部分抢购是以付款为顺序为优先级的,我们将付款操作也加入秒杀脚本的流程,并作为最后一步,当我们提交订单成功后,脚本将自动帮助我们执行支付宝的付款。此处需要注意的是,我们需要在脚本中提前设置好正确的6位数支付密码。
秒杀脚本使用示例
介绍完了秒杀脚本的核心逻辑,接下来,我们以天猫超市抢购茅台酒为例,来为大家演示这个秒杀脚本的执行流程。我们以茅台举例,并不意味着这个脚本只能抢购茅台,任何加入购物车的商品,在任何的时间,都可以用这个脚本来执行到点的秒杀。茅台由于天猫超市每天的量很有限,加上各类抢购的 * 很多,成功率比较低,但对于其他商品来说,这个秒杀脚本经过我们的对比测试,相比较手工抢购,成功率将提高一个量级。
我们执行main.py主程序脚本,程序会通过chromdriver控制,启动chrome自动打开淘宝主页,并进入登陆界面。可用看到网页上方有一行提示:Chrome正受到自动测试软件的控制。
然后,我们通过手机淘宝扫码登陆进入,登陆后,程序会自动进入购物车的界面,并每分钟刷新一次,以防止登陆超时。
临近抢购时间,程序选中购物车商品,并在抢购时间到达时,自动点击结算、提交订单。
提交订单成功后,进入付款环节,如果付款成功,代表我们的这一次秒杀成功抢到心仪的商品了,而如果付款失败,说明此次秒杀我们运气不佳,有人先一步抢到了。不过总体来说,我们有了秒杀脚本,已经超越了90%用户的抢购速度了。
来源:https://blog.csdn.net/sljsz/article/details/117932466


猜你喜欢
- 网上广泛流传的取 object 的绝对位置的做法是:var getAbsPos = function(pTar
- FlippingBook是一款收费的图书翻页效果的flash播放器。在线预览地址:FlippingBook,破解版下载地址 备用下
- Character 字符串:数据类型描述存储char(n)固定长度的字符串。最多 8,000 个字符。nvarchar(n)可变长度的字符串
- 下面给大家介绍如何利用pandas工具输出每行的索引值、及其对应的行数据,先给大家展示下输出结果,感兴趣的朋友可以参考具体实例代码。输出结果
- 为什么要使用Enum.(Why?)在普通类别中,枚举和我们在对象中定义的类变量一样的,每一个类变量就是一个枚举项,访问方式如下:class
- 在 linux 系统中连接 mdb 数据库,直接连接的话,mdb 默认的驱动无法识别非 windows 的路径, 所以不能使用常规的连接方式
- 一,粘包问题详情 1,只有TCP有粘包现象,UDP永远不会粘包你的程序实际上无权直接操作网卡的,你操作网卡都是通过操作系统给用户程序暴露出来
- 单线程同步使用socket传输数据使用json序列化消息体struct将消息编码为二进制字节串,进行网络传输消息协议// 输入{  
- window.opener 的用法 window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一
- 写在前面:从昨晚的梦里回忆起数据管理的作业:实现一个自己的选题----毕业生信息管理系统,实现学生个人信息基本的增删改查,我想了想前段时间刚
- 日期的转换及计算对于日期,有时需执行不同时间单位的转换,或者接受字符串格式的日期,转换为 datetime 对象。有时需计算日期的范围,以及
- 效果图如下:Demo演示地址:点击这里主要的JS代码如下:var tbody = document.querySelector('#
- 本文实例讲述了Python统计纯文本文件中英文单词出现个数的方法。分享给大家供大家参考,具体如下:第一版: 效率低# -*- coding:
- 一、绘制带趋势线的散点图实现功能:在散点图上添加趋势线(线性拟合线)反映两个变量是正相关、负相关或者无相关关系。实现代码:import pa
- 前言现在很多地方都有使用到弹幕,最近在捣鼓自己的个人博客网站,也想着在里面加入一个弹幕模块,所以在这里封装了一个可复用的弹幕组件,目前已经实
- mysql行转列、列转行 语句不难,不做多余解释了,看语句时,从内往外一句一句剖析行转列 &nb
- 可能各位朋友看到这个标题很不解,到底什么是习惯化,什么又是去习惯化?下面我来慢慢介绍我的个人理论。习惯化:随着对刺激的熟悉,人们越来越注意不
- 想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢?目前国内网站经常会让大家把其中一个python.e
- 前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息和教师信息操作,st
- 小的时候大家应该都玩过万花尺,将笔尖放置万花尺内不停的转动,便可以画出一幅精致的线稿图,现在我们不用万花尺,我们通过Python也能绘制出万