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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
python操作CouchDB的方法
Oct 08 Python
分析Python读取文件时的路径问题
Feb 11 Python
对python中if语句的真假判断实例详解
Feb 18 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
django 控制页面跳转的例子
Aug 06 Python
Python阶乘求和的代码详解
Feb 14 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
一个数据采集类
2007/02/14 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
工程业务员工作职责
2013/12/07 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书