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
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python中max函数用法实例分析
Jul 17 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
Python在图片中添加文字的两种方法
Apr 29 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
python实现小程序推送页面收录脚本
Apr 20 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
python如何运行js语句
Sep 09 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
用Python提取PDF表格的方法
Apr 11 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
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python中Selenium库使用教程详解
2020/07/23 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
科技节口号
2014/06/19 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
Java spring单点登录系统
2021/09/04 Java/Android
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技