Python使用Selenium实现淘宝抢单的流程分析

作者:Coder小明 时间:2022-01-31 04:04:18 

最近,小明为了达成小姐姐的愿望,在某宝买到心仪的宝贝,再加上又迷上了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中文文档

今晚可以不加班!

来源:https://www.cnblogs.com/coderxx/p/13179573.html

标签:Python,Selenium,抢单
0
投稿

猜你喜欢

  • 教你怎么用Python实现多路径迷宫

    2022-03-11 15:07:52
  • python实现Windows电脑定时关机

    2021-05-17 02:46:58
  • php中session_unset与session_destroy的区别分析

    2023-07-17 21:34:56
  • 在python plt图表中文字大小调节的方法

    2021-04-21 04:40:28
  • 解决Dreamweaver不支持中文文件名

    2008-06-04 09:37:00
  • python利用插值法对折线进行平滑曲线处理

    2023-10-15 14:48:08
  • Golang切片Slice功能操作详情

    2024-04-29 13:06:54
  • 判断所使用的浏览器不仅仅是电脑浏览器代码整理

    2023-12-13 10:13:21
  • Centos7使用yum安装Mysql5.7.19的详细步骤

    2024-01-24 13:01:56
  • 用Python读取几十万行文本数据

    2023-10-13 21:56:04
  • 如何处理Oracle中较大的文本数据?

    2009-11-11 20:06:00
  • 如何限制上传文件的大小?

    2010-06-09 18:47:00
  • 基于Python实现简单学生管理系统

    2021-01-02 18:58:11
  • mysql安装图解 mysql图文安装教程(详细说明)

    2024-01-28 08:37:50
  • VUEJS实战之构建基础并渲染出列表(1)

    2024-05-29 22:14:46
  • ASP中从数据库读取二进制文件数据代码

    2010-04-24 15:44:00
  • DreamweaverMX2004的一句话技巧

    2009-05-22 18:23:00
  • Django中redis的使用方法(包括安装、配置、启动)

    2022-03-09 02:15:59
  • python选择排序算法实例总结

    2023-08-29 06:58:28
  • Oracle数据库中表空间的基本管理操作小结

    2024-01-26 23:18:26
  • asp之家 网络编程 m.aspxhome.com