使用Python实现毫秒级抢单功能


Posted in Python onJune 06, 2019
  1. 目录:
  2. 引言
  3. 环境
  4. 需求分析&前期准备
  5. 淘宝购物流程回顾
  6. 秒杀的实现
  7. 代码梳理
  8. 总结

0 引言

年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领取三次粉丝专属现金大红包。

有了现金大红包,如何做到更省钱的剁手呢?今天给大家提供一种思路,用Python实现秒杀订单,借用自动化方式完成最优解。

1 环境

操作系统:Windows

Python版本:3.7.2

2 需求分析&前期准备

2.0 需求分析

我们的目标是秒杀淘宝的订单,这里面有几个关键点,首先需要登录淘宝,其次你需要准备好订单,最后要在指定时间快速提交订单。

登录淘宝,这里就要用到一个爬虫利器Selenium,它是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。另外对于一些 JavaScript 渲染的页面来说,此种抓取方式非常有效。

2.1 Selenium的安装

Selenium 的安装很简单,可采用如下方式。

pip install selenium

Selenium安装好之后,并不能直接使用,它需要与浏览器进行对接。这里拿Chrome浏览器为例。若想使用Selenium成功调用Chrome浏览器完成相应的操作,需要通过ChromeDriver来驱动。

2.2 ChromeDriver的安装

这里是ChromeDriver的官方下载地址。

链接:

https://chromedriver.storage.googleapis.com/index.html

我们在下载之前先来确认下我们使用的Chrome浏览器版本。

使用Python实现毫秒级抢单功能

通过ChromeDriver的下载链接,找到与之对应的Chrome浏览器版本,根据你电脑系统的平台类型进行下载。

使用Python实现毫秒级抢单功能 使用Python实现毫秒级抢单功能

下载完成之后,解压,将其放置在Python安装路径下Scripts文件夹中即可

使用Python实现毫秒级抢单功能

上述操作结束后,我们执行如下命令,测试一下

from selenium import webdriver
# 打开Chrome浏览器
browser = webdriver.Chrome()

代码执行后,若成功打开了浏览器,则证明你的ChromeDriver安装的没问题,可以正常愉快地使用Selenium了。

接下来,我们先来回顾下淘宝购物流程。

3 淘宝购物流程回顾

3.1 首先要打开淘宝网站

https://www.taobao.com

换作使用Seleuinm方式,代码如下:

browser.get("https://www.taobao.com")

3.2 我们登录淘宝才能进行下一步操作

使用Python实现毫秒级抢单功能 

换成Seleuinm方式,代码:

browser.find_element_by_link_text("亲,请登录").click()

这时我们就要就跳到了一个扫码登录的页面,我们用手机进行扫码,登录成功之后进行下一步。

3.3 登录成功之后,我们来打开购物车,链接如下:

https://cart.taobao.com/cart.htm

换成Seleuinm方式,代码:

browser.get("https://cart.taobao.com/cart.htm")

3.4 我们想要全选购物车中的商品,直接点击全选即可

使用Python实现毫秒级抢单功能

换成Seleuinm方式,代码:

browser.find_element_by_id("J_SelectAll1").click()

注:若你的购物车商品比较多,又不想全选购买,那就 手动 勾选想要下单的商品。

3.5 勾选好商品后就可以“结算”下单

使用Python实现毫秒级抢单功能

换成Seleuinm方式,代码即:

browser.find_element_by_link_text("结 算").click()

3.6 等待提交完订单后才算数

使用Python实现毫秒级抢单功能

换成Seleuinm方式,代码即:

browser.find_element_by_link_text('提交订单').click()

3.7 订单成功秒下之后,接下来的付款,慢慢来就好。

使用Python实现毫秒级抢单功能

4 秒杀的实现

秒杀的实现,思路也很简单。这里有两个时间点,一是抢购时间,一是当前时间。只需要比较这两个时间点,到了抢购时间立即下单即可。

记录时间,需要使用datetime这个内置模块,代码如下:

import datetime
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

5 代码梳理

首先得登录淘宝,这里我们定义一个login函数

def login():
 # 打开淘宝首页,通过扫码登录
 browser.get("https://www.taobao.com")
 time.sleep(3)
 if browser.find_element_by_link_text("亲,请登录"):
  browser.find_element_by_link_text("亲,请登录").click()
  print(f"请尽快扫码登录")
  time.sleep(10)

接下来就是勾选购物车中的商品,这里我们定义一个picking函数

def picking(method):
 # 打开购物车列表页面
 browser.get("https://cart.taobao.com/cart.htm")
 time.sleep(3)
 # 是否全选购物车
 if method == 0:
  while True:
   try:
    if browser.find_element_by_id("J_SelectAll1"):
     browser.find_element_by_id("J_SelectAll1").click()
     break
   except:
    print(f"找不到购买按钮")
 else:
  print(f"请手动勾选需要购买的商品")
  time.sleep(5)

等待抢购时间,定时秒杀,这里我们定义一个buy函数

def buy(times):
 while True:
  now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
  # 对比时间,时间到的话就点击结算
  if now > times:
   # 点击结算按钮
   while True:
    try:
     if browser.find_element_by_link_text("结 算"):
      browser.find_element_by_link_text("结 算").click()
      print(f"结算成功,准备提交订单")
      break
    except:
     pass
   # 点击提交订单按钮
   while True:
    try:
     if browser.find_element_by_link_text('提交订单'):
      browser.find_element_by_link_text('提交订单').click()
      print(f"抢购成功,请尽快付款")
    except:
     print(f"再次尝试提交订单")
   time.sleep(0.01)

6 总结

短短几十行代码就能秒杀淘宝订单,赶紧行动起来吧!记着,每天在淘宝上搜索小胖发福利,领取粉专属福利哟~

以上所述是小编给大家介绍的使用Python实现毫秒级抢单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python脚本实现网卡流量监控
Feb 14 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
布隆过滤器的概述及Python实现方法
Dec 08 Python
Django 限制访问频率的思路详解
Dec 24 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
Aug 02 Python
Python实现简繁体转换
Jun 07 Python
Python绘画好看的星空图
Mar 17 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 #Python
python opencv摄像头的简单应用
Jun 06 #Python
Python完成毫秒级抢淘宝大单功能
Jun 06 #Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 #Python
记录Python脚本的运行日志的方法
Jun 05 #Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 #Python
分享8个非常流行的 Python 可视化工具包
Jun 05 #Python
You might like
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python爬取哈尔滨天气信息
2018/07/14 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
金融行业职业生涯规划范文
2014/01/17 职场文书
学校评语大全
2014/05/06 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2016年猴年新春致辞
2015/08/01 职场文书