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中生成器和yield语句的用法详解
Apr 17 Python
python删除列表中重复记录的方法
Apr 28 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Django 解决由save方法引发的错误
May 21 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python常用断言函数实例汇总
Nov 30 Python
python Pexpect模块的使用
Dec 25 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
深入浅析Python的类
2018/06/22 Python
Django异步任务线程池实现原理
2019/12/17 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
保证金退回承诺函格式
2015/01/21 职场文书
党员个人年度总结
2015/02/14 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android