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操作列表的常用方法分享
Feb 13 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
Python学习小技巧之列表项的排序
May 20 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
python能做什么 python的含义
Oct 12 Python
python opencv如何实现图片绘制
Jan 19 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python中按值来获取指定的键
2019/03/04 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
材料采购员岗位职责
2013/12/17 职场文书
银行办理业务介绍信
2014/01/18 职场文书
物流专员岗位职责
2014/02/17 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
工会主席事迹材料
2014/06/03 职场文书
医学求职自荐信
2014/06/21 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
一个都不能少观后感
2015/06/04 职场文书
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技