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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
python通过urllib2爬网页上种子下载示例
Feb 24 Python
python实现无证书加密解密实例
Oct 27 Python
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
python抓取最新博客内容并生成Rss
May 17 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
python随机模块random使用方法详解
Feb 14 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
Python魔术方法专题
Jun 19 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
python条件和循环的使用方法
2013/11/01 Python
python实现得到一个给定类的虚函数
2014/09/28 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
python中def是做什么的
2020/06/10 Python
路政管理专业推荐信
2013/11/11 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Nginx如何配置根据路径转发详解
2022/07/23 Servers