Python使用Selenium实现淘宝抢单的流程分析


Posted in Python onJune 23, 2020

最近,小明为了达成小姐姐的愿望,在某宝买到心仪的宝贝,再加上又迷上了python,就通过python轻而易举地实现了(个人声明:对Java来说,这并不是背叛)。

需求分析&前期准备

需求其实很简单,正常购物。那我们平常的购物流程如下所示:

Python使用Selenium实现淘宝抢单的流程分析

开始之前,我们需要准备一下程序运行环境。

  • 环境系统:Windows/Mac OS
  • Python版本:3.7.2

为了让程序模拟我们每一步操作,给大家介绍一个利器:Selenium

Selenium测试同学应该会感觉特别亲切。它是一个自动化测试工具,通过它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。

Selenium的安装

运行如下命令:

pip install selenium

但若想使用Selenium成功调用Chrome浏览器完成相应的操作,我们还需要一个媒介与浏览器对接。小明本次使用的是Chrome浏览器,因此就需要通过ChromeDriver来驱动。

ChromeDriver的安装

这里是谷歌浏览器ChromeDriver的官方下载地址:
https://chromedriver.storage.googleapis.com/index.html
我们需要根据自己的Chrome浏览器版本,找到相应版本的ChromeDriver,再根据你电脑系统的平台类型进行下载、解压。

  • windows:将其放置在Python安装路径下Scripts文件夹下
  • Mac OS:将其放置在/usr/local/bin

环境配置到此结束,小明编写了一个python脚本,用来验证环境搭建是否成功:

from selenium import webdriver
# 打开Chrome浏览器
if __name__ == '__main__':

browser = webdriver.Chrome()

运行代码后,如果成功打开了一个新的浏览器,就证明我们的环境安装的没问题,接下来就可以愉快的购物了。

脚本编写

对比上面淘宝购物流程图,对应代码如下:

打开淘宝网站

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

登录
首先是跳转到登陆页

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

登录方式选择二维码

browser.find_element_by_class_name("icon-qrcode").click()

用手机进行扫码成功之后进行下一步。

登录成功后,打开购物车

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

勾选商品

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

推荐选择全选,但如果你的购物车商品比较多,又不想全选购买,那就暂先手动勾选想要下单的商品?。

结算

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

提交订单

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

只要下单成功,接下来的付款,不用着急,只要在规定的时间内支付就好。
以上就是完整购物的流程。那秒杀是如何实现呢?

秒杀的实现

思路其实很简单,就是在正常购物的基础上增加一个时间的判断:如果当前时间到了指定的时间点,就触发下单。

获取当前时间,需要使用到datetime这个内置模块,代码如下:

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

代码梳理

  • 定义一个login函数,用来登录
  • 定义一个picking函数勾选购物车中的商品
  • 定义一个buy函数等待抢购时间,定时秒杀

完整代码请点击访问我的github

推荐文档

Selenium-Python中文文档

今晚可以不加班!

到此这篇关于Python使用Selenium实现淘宝抢单的文章就介绍到这了,更多相关Python实现淘宝抢单内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
python 读入多行数据的实例
Apr 19 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python绘制BA无标度网络示例代码
Nov 21 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
在Python中字典按值排序的实现方法
Nov 12 Python
基于Python实现将列表数据生成折线图
Mar 23 Python
python2和python3哪个使用率高
Jun 23 #Python
python使用QQ邮箱实现自动发送邮件
Jun 22 #Python
浅谈keras中loss与val_loss的关系
Jun 22 #Python
python实现简易版学生成绩管理系统
Jun 22 #Python
python能否java成为主流语言吗
Jun 22 #Python
python让函数不返回结果的方法
Jun 22 #Python
python实现学生成绩测评系统
Jun 22 #Python
You might like
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
php实现头像上传预览功能
2017/04/27 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python正则表达式实例代码
2020/03/03 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
计算机专业自荐信
2013/10/14 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
寻找成龙观后感
2015/06/12 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
如何Python使用re模块实现okenizer
2022/04/30 Python