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新手在作用域方面经常容易碰到的问题
Apr 03 Python
python中关于for循环的碎碎念
Jun 30 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
Python中的TCP socket写法示例
May 11 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
微信公众号token验证失败解决方案
Jul 22 Python
Python3获取cookie常用三种方案
Oct 05 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
python实现三种随机请求头方式
Jan 05 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
尝试使用Python爬取城市租房信息
Apr 12 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中的字符串函数
2006/11/24 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
Python里隐藏的“禅”
2014/06/16 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python pickle模块用法实例分析
2015/05/27 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python requests使用socks5的例子
2019/07/25 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
如何在python中写hive脚本
2019/11/08 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
生产助理岗位职责
2014/06/18 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
三方股东合作协议书
2014/10/28 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle