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入门篇之编程习惯与特点
Oct 17 Python
Python实现快速多线程ping的方法
Jul 15 Python
django之session与分页(实例讲解)
Nov 13 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Django项目后台不挂断运行的方法
Aug 31 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
对python中arange()和linspace()的区别说明
May 03 Python
Python新手学习标准库模块命名
May 29 Python
Python 如何实现访问者模式
Jul 28 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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
模仿OSO的论坛(五)
2006/10/09 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
jquery foreach使用示例
2013/09/12 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python基础教程之面向对象的一些概念
2014/08/29 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python基础教程之while循环
2019/08/14 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
护理自荐信
2013/10/22 职场文书
怎么写好自荐信
2013/10/30 职场文书
六年级数学教学反思
2014/02/03 职场文书
四风存在的原因分析
2014/02/11 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
如何优化vue打包文件过大
2022/04/13 Vue.js
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang