selenium+python自动抢购源码
华为MATE10抢购源码,使用selenium+python+Chrome
大概流程:
1、按帐号生成多个线程开启浏览器
2、登陆帐号密码,有时需要验证码,此处有手动操作
3、不停刷新抢购页面,抢购按钮出现时选择规格提交订单
4、排队页面等待,直到不在排队
github:https://github.com/pengsd1991/python_buy_hw
- # -*- encoding:utf-8 -*-
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- import time
- from threading import Thread
- ACCOUNTS = {
- ”account1”:“password1”
- ”account2”:“password2”
- }
- #MATE10 抢购地址
- #BUY_URL = ‘https://www.vmall.com/product/396602535.html’
- #保时捷
- BUY_URL = ’https://www.vmall.com/product/173840389.html’
- #测试
- # BUY_URL = ‘https://www.vmall.com/product/144380118.html’
- #登录url
- LOGIN_URL = ’https://hwid1.vmall.com/CAS/portal/login.html?validated=true&themeName=red&service=https%3A%2F%2Fwww.vmall.com%2Faccount%2Facaslogin%3Furl%3Dhttps%253A%252F%252Fwww.vmall.com%252F&loginChannel=26000000&reqClientType=26&lang=zh-cn’
- #登录成功手动确认URL
- LOGIN_SUCCESS_CONFIRM = ’https://www.baidu.com/’
- #开始自动刷新等待抢购按钮出现的时间点,提前3分钟
- BEGIN_GO = ’2017-11-16 10:07:10’
- #进到购买页面后提交订单
- def submitOrder(driver,user):
- time.sleep(1)
- while BUY_URL == driver.current_url :
- print (user+‘:当前页面还在商品详情!!!’)
- time.sleep(3)
- while True:
- try:
- submitOrder = driver.find_element_by_link_text(’提交订单’)
- submitOrder.click()
- print (user+‘:成功提交订单’)
- break
- except :
- print (user+‘:提交不了订单!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’)
- time.sleep(1)#到了订单提交页面提交不了订单一直等待
- pass
- while True:
- time.sleep(3000)
- print (user+‘:进入睡眠3000s’)
- pass
- #排队中
- def onQueue(driver,user):
- time.sleep(1)
- nowUrl = driver.current_url
- while True:
- try:
- tryAgain = driver.find_element_by_link_text(’再试一次’)
- tryAgain.click()
- print (user+‘:再试一次点击’)
- pass
- except :
- print (user+‘:排队中’)
- time.sleep(0.3)#排队中
- pass
- if nowUrl != driver.current_url:
- print (user+‘:排队页面跳转了!!!!!!!!!!!!!!’)
- break
- submitOrder(driver,user)
- #登录成功去到购买页面
- def goToBuy(driver,user):
- driver.get(BUY_URL)
- print (user+‘打开购买页面’)
- #转换成抢购时间戳
- timeArray = time.strptime(BEGIN_GO, ”%Y-%m-%d %H:%M:%S”)
- timestamp = time.mktime(timeArray)
- #未发现购买按钮
- no_found_bug = True
- while True:
- if time.time()>timestamp:#到了抢购时间
- try:
- buyButton = driver.find_element_by_link_text(’立即申购’)
- no_found_bug = False
- print (user+‘立即申购按钮出现了!!!’)
- #点击摩卡金
- # driver.find_element_by_xpath(‘//*[@id=”pro-skus”]/dl[1]/div/ul/li[2]/div/a/p/span’).click()
- #点击6gb+128gb
- # driver.find_element_by_xpath(‘//*[@id=”pro-skus”]/dl[3]/div/ul/li[2]/div/a/p/span’).click()
- buyButton.click()
- print (user+‘立即申购’)
- break
- except :
- if no_found_bug:
- time.sleep(0.3)
- if BUY_URL == driver.current_url :#还在当前页面自动刷新
- driver.get(BUY_URL)
- pass
- else:
- print(user+‘手动点击了申购’)
- break
- else:
- print (user+‘点击不了申购!!!!!!需要手动点击!!!!!’)
- time.sleep(0.5)
- if BUY_URL != driver.current_url :
- print(user+‘手动点击了申购’)
- break
- pass
- else:
- time.sleep(15)
- print (user+‘睡眠15s,未到脚本开启时间:’+BEGIN_GO)
- onQueue(driver,user)
- #登录商城,登陆成功后手动先访问baidu页面跳转至抢购页面
- def loginMall(user,pwd):
- driver = webdriver.Chrome()
- driver.get(LOGIN_URL)
- hasLogin = False
- try:
- account = driver.find_element_by_xpath(’//*[@id=”login_userName”]’)
- account.click()
- account.send_keys(user)
- time.sleep(1)
- password = driver.find_element_by_xpath(’//*[@id=”login_password”]’)
- password.click()
- password.send_keys(pwd)
- print (user+‘输入了账号密码,等待手动登录’)
- except :
- print (user+‘账号密码不能输入’)
- while True:
- time.sleep(3)
- if LOGIN_SUCCESS_CONFIRM == driver.current_url :
- print(user+‘登录成功!’)
- break
- goToBuy(driver,user)
- if __name__ == “__main__”:
- # 账号密码
- data = ACCOUNTS
- # 构建线程
- threads = []
- for account, pwd in data.items():
- t = Thread(target=loginMall,args=(account,pwd,))
- threads.append(t)
- # 启动所有线程
- for thr in threads:
- time.sleep(2)
- thr.start()
# -*- encoding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from threading import Thread
http://www.taodudu.cc/news/show-4412292.html
相关文章:
- 并发抢购 java_【转】京东抢购服务高并发实践
- 抢购秒杀场景
- php抢购问题,PHP并发抢购解决方案
- java抢购_java redis 实现抢购秒杀
- 抢购
- 京东抢购Python脚本
- 安装navicat missing required library xxx.dll(libcc.dll libdd.dll)亲测有效
- exe停止运行C语言,处理win7应用程序已停止“异常代码c0000005”的方法
- C 语言调用 JNI_CreateJavaVM
- C语言编程计算差商表,计算方法C语言编程计算方法C语言编程.doc
- 论 致命错误c0000005
- splitstring函数在C语言中的,C语言 字符串Split功能实现
- c语言 --- 指针
- C语言-解释复杂声明
- FFT的C语言实现,对照MATLIB
- 分析编程题c语言,二级C语言部分上机编程题详细分析
- Linux上C语言程序编译过程详解
- c语言性能测试库,C语言qsort函数算法性能测试
- 编程c语言差商表,计算方法C语言编程总汇.doc
- [c语言]0xC0000005访问冲突
- c语言编程计算c上0下n,计算方法C语言编程讲解.doc
- python36.dll 0xc000005_使用python运行时出现0xc000005错误
- matlab polyfit c语言,算法——纯C语言最小二乘法曲线拟合
- 0xC000005:Access Violation和指针强制转换问题
- c0000005 Access Violation
- C语言主函数返回值含义
- win7运行c语言程序,win7打开程序弹出错误0xc000005的解决方法
- 此计算机无法与域 cluster,创建0xc000005e群集时出现错误 - Windows Server | Microsoft Docs...
- 致命错误:异常代码=C0000005(这篇最详细,收藏之~)
- 前端知识点整理(待续)
selenium+python自动抢购源码相关推荐
- python自动下单源码_python+selenium实现淘宝双十一自动下单
python+selenium实现淘宝双十一自动下单 # !/usr/bin/env python # 2020/05/20 # 淘宝秒杀脚本,扫码登录版 from selenium import w ...
- python自动下单源码_python selenium实现拼多多自动下单功能
你需要把chrome.exe放置到python scripts 目录下,配置要全局变量 然后cmd 打开chrome.exe --remote-debugging-port=9222 --user-d ...
- python自动交易源码_【硬核福利】量化交易神器talib中28个技术指标的Python实现(附全部源码)...
内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 之前跟大家分享过用Python调用talib实现技术指标分析,但是许多小伙伴有 ...
- 【Python爬虫脚本】拒绝黄牛从我做起!Python自动抢购脚本,准点原价秒杀飞天茅台!!!
前言 点击下方视频即可查看详细教程 [Python爬虫脚本]拒绝黄牛从我做起!Python自动抢购脚本,准点原价秒杀飞天茅台!!! 源码领取 上述这份完整版的源码课件已经上传CSDN官方,朋友们如果需 ...
- 彻底弄懂Python标准库源码(一)—— os模块
目录 第1~22行 模块整体注释.nt与posix 第24~46行 模块引入._exists方法._get_exports_list方法 第48~97行 根据系统不同导入不同的方法和属性 第100~1 ...
- 【python】又拍云采集工具助手exe带python图片采集源码
[python]又拍云采集工具助手exe带python图片采集源码 论坛的老哥要的东西!练手试了一下! 技术比较渣,见谅! 拿去玩! 适合想要获取 又拍云 相册图片的需求! 自己测试了一下,没有用多线 ...
- Selenium3 Python WebDriver API源码探析(19)加载FireFox用户配置文件
FireFox用户配置文件 Firefox 将用户个人信息(例如书签.密码.首选项.扩展.Cookie.证书等)保存在一系列文件中,它们被叫做用户配置文件,它们与 Firefox 的程序文件保存在不同 ...
- 减少重复工作,通过 Annotation Processor 自动完成源码的生成
背景: 类似 lombok.Data 解决了 bean 类的自动完成 setter/getter 方法,在 scrapy4j 框架实现过程中,发现 item 每次都需要人工编写,且编写内容除了属性和类 ...
- SpringBoot自动装配源码解析
Spring Boot 自动装配原理 使用Spring Boot最方便的一点体验在于我们可以几零配置的搭建一个Spring Web项目,那么他是怎么做到不通过配置来对Bean完成注入的呢.这就要归功于 ...
最新文章
- poj 3131 双向搜索+hash判重
- 工作275:表单验证层级添加
- 刷题总结——xor(ssoj)
- linux查看iozone安装目录,使用IOzone测试磁盘性能
- Tweet button with a callback – How to?
- 如何找到网站服务器的源代码_如何花3-5分钟找到网站Bug?
- shell脚本定时重启tomcat
- 二维码的纠错码原理及细节
- 偶极子天线的优缺点_关于偶极子天线的若干问题。
- 简述WebS简述WebService与.NET Remoting的区别及适应场合
- Word 软回车和硬回车
- iOS App配置 Universal Link通用链接
- 北汽极狐ARCFOX与华为合作
- 一篇文章带你更深入了解区块链有哪些应用?
- BPFT1.7,全名BaiduPanFilesTransfers免费的百度网盘批量转存工具【精】
- Android实现真正的344格式化手机号码输入框
- 支持NTFS格式的Knoppix版本
- ORACLE 培训教程(1)
- 基于IP的设计学习1:ug896.一些基本概念
- [2022.10.30] Linux系统硬盘迁移方案
热门文章
- 下列不属于计算机未来发展趋势的是,1-9 关于计算机的发展趋势,下面哪种不是未来发展趋势 ____________ 。_学小易找答案...
- AI之AutoML:autosklearn/Auto-Sklearn(基于scikit-learn库的自动化的机器学习工具)的简介、安装、使用方法之详细攻略
- JS对于字符串的切割截取
- 一张图读懂极大极小搜索和α-β剪枝
- 极兔快递单号查询API
- qsort排序字符串
- Uber Go 语言编程规范:避免语义不明确的参数(Naked Parameters)
- 共享办公室租赁和传统写字楼之间,如何抉择
- html/css导入自己的字体样式
- HTTP 请求是什么?