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使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
python函数局部变量用法实例分析
Aug 04 Python
Python制作词云的方法
Jan 03 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
Python 生成VOC格式的标签实例
Mar 10 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python根据字符串调用函数过程解析
Nov 05 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 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
PHP4之COOKIE支持详解
2006/10/09 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
YII框架常用技巧总结
2019/04/27 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
Python中除法使用的注意事项
2014/08/21 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
django实现前后台交互实例
2017/08/07 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
python实现简易学生信息管理系统
2020/04/05 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
董事长秘书工作总结
2015/08/14 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python