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 简易计算器程序,代码就几行
Aug 29 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
Python解析xml中dom元素的方法
Mar 12 Python
Python fileinput模块使用实例
May 28 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
linux环境中没有网络怎么下载python
Jul 07 Python
Python数据库小程序源代码
Sep 15 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
python 读取串口数据的示例
Nov 09 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 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
拼音码表的生成
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
PHP新手上路(六)
2006/10/09 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Python3 读取Word文件方式
2020/02/13 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
助人为乐表扬信范文
2014/01/14 职场文书
初一家长会邀请函
2014/01/31 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
文员岗位职责
2015/02/04 职场文书
警用民用对讲机找不同
2022/02/18 无线电
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android