python+selenium+chrome实现淘宝购物车秒杀自动结算


Posted in Python onJanuary 07, 2021

之前总是想要买aj,但是淘宝店铺每次发售手动抢的时候一般都会被黄牛抢走。。。最近毕业设计学习了一下python的东西,所以写了这么一个抢购的东西算是解决自己一个小小的愿望,这可是aj啊。
我会把内容写的尽量面向初学者,从头至尾的过程都会有所提及。代码也放在了后面

一、所需环境

Selenium

Selenium是一个开源的自动化测试工具。原理是通过模拟浏览器操作,还支持java,python,c#,php等主流的编程语言。

一般爬虫也支持Selenium,一些经过js渲染的内容和数据和ajax异步请求出来的数据通过Selenium就能很简单直观的爬取下来。但是Selenium的缺点也是显而易见的,相比于正则的匹配Selenium要加载浏览器以及更多的东西,他的执行速度比其他模块慢很多,所以若要保证速度,能不用Selenium就不要用Selenium吧。

web测试自动化:不同于单元测试和接口测试,web测试的自动化更加贴近于人的行为,通过对用户点击行为和文本输入行为等进行模拟,当web自动化登录成功后,就去获取这个数据进行断言。断言如果相等,测试通过;如果不相等,测试失败。用户可以看到某一项操作是否真的产生了,但是程序只能通过判断某些“证据”去判断之前的行为是否真的生效。

二、安装

下载Selenium并安装

安装对应浏览器的驱动程序 WebDriver

驱动程序要和自己电脑上的浏览器版本相对应,比如我使用的chrome浏览器是72版本的,就要下载ChromeDriver2.46这个版本。

python+selenium+chrome实现淘宝购物车秒杀自动结算

python+selenium+chrome实现淘宝购物车秒杀自动结算

下载解压之后配置环境变量Path即可。 Mac对应的环境变量配置可以参考这位老哥的文章进行配置

三、代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import webdriver
import datetime
import time


def login():
  # 打开淘宝登录页,并进行扫码登录
  browser.get("https://www.taobao.com")
  time.sleep(3)
  if browser.find_element_by_link_text("亲,请登录"):
    browser.find_element_by_link_text("亲,请登录").click()
    print("请在15秒内完成扫码")
    time.sleep(15)
    browser.get("https://cart.taobao.com/cart.htm")
  time.sleep(3)

  now = datetime.datetime.now()
  print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))


def buy(times, choose):
  is_buyed = False
  # 点击购物车里全选按钮
  if choose == 2:
    print("请手动勾选需要购买的商品")
  while True:
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    print('现在时间:', now)
    # 对比时间,时间到的话就点击结算
    if now > times:
      if choose == 1:
        while True:
          try:
            if browser.find_element_by_id("J_SelectAllcbx1"):
              browser.find_element_by_id("J_SelectAllcbx1").click()
              print('尝试全选')
              break
          except:
            print("找不到全选按钮")
      # 点击结算按钮
      try:
        if browser.find_element_by_id("J_Go"):
          browser.find_element_by_id("J_Go").click()
          print("结算成功")
      except:
        pass
      while True:
        try:
          if browser.find_element_by_link_text('提交订单') and is_buyed == False:
            browser.find_element_by_link_text('提交订单').click()
            now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            print("抢购成功时间:%s" % now1)
        except:
          print("再次尝试提交订单")
      time.sleep(0.005)


if __name__ == "__main__":
  times = input("请输入抢购时间,格式如(2018-09-06 11:20:00.000000):")
  # 时间格式:"2018-09-06 11:20:00.000000"
  browser = webdriver.Chrome()
  browser.maximize_window()
  login()
  choose = input("到时间自动勾选购物车请输入“1”,否则输入“2”:")
  buy(times, choose)

最后run()一把就ok了!!

到此这篇关于python+selenium+chrome实现淘宝购物车秒杀自动结算的文章就介绍到这了,更多相关python+selenium+chrome 秒杀自动结算内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python切片用法实例教程
Sep 08 Python
python实现通过shelve修改对象实例
Sep 26 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
python版百度语音识别功能
Jul 09 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
python实现mean-shift聚类算法
Jun 10 Python
python 19个值得学习的编程技巧
Aug 15 Python
python+opencv实现目标跟踪过程
Jun 21 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 #Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 #Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 #Python
python 获取谷歌浏览器保存的密码
Jan 06 #Python
python实现PolynomialFeatures多项式的方法
Jan 06 #Python
pytorch中index_select()的用法详解
Jan 06 #Python
Python之京东商品秒杀的实现示例
Jan 06 #Python
You might like
php socket方式提交的post详解
2008/07/19 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php事务处理实例详解
2014/07/11 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python with用法实例
2015/04/14 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
CK美国官网:Calvin Klein
2016/08/26 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
几个判断型的面试题
2012/07/03 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
幼儿教师考核制度
2014/01/25 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL