Python完成毫秒级抢淘宝大单功能


Posted in Python onJune 06, 2019

引言

年中购物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完成毫秒级抢淘宝大单功能

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)
Python 相关文章推荐
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
Python3.6简单反射操作示例
Jun 14 Python
Django 内置权限扩展案例详解
Mar 04 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 #Python
记录Python脚本的运行日志的方法
Jun 05 #Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 #Python
分享8个非常流行的 Python 可视化工具包
Jun 05 #Python
Django组件cookie与session的具体使用
Jun 05 #Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 #Python
python3下载抖音视频的完整代码
Jun 05 #Python
You might like
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python实现简单五子棋游戏
2019/06/18 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
完美主义个人的自我评价
2014/02/17 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
python_tkinter弹出对话框创建
2022/03/20 Python