#!/usr/bin/env python
'''
作者:张铭达
功能:淘宝秒杀购物
版本:0.2
日期2019-06-16
''' from selenium import webdriver
import time,datetime driver = webdriver.Chrome()
driver.maximize_window() username = '张铭达33333'
class TaoBao(object):
def __init__(self):
pass
def login(self):
driver.get('https://www.taobao.com')
time.sleep(0.5)
loginelement = driver.find_element_by_link_text("亲,请登录")
if loginelement:
loginelement.click()
while True:
try:
login_status = driver.find_element_by_link_text('张铭达33333')
print('已登录')
return True
except:
print('等待扫码或密码登录...')
time.sleep(1) def daojishi(self,buytime):
'''
:param buytime: 输入字符串时间
:return: 返回当前距离购买时间还有多少天,小时,分钟,秒
'''
daojishi = datetime.datetime.strptime(buy_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.now()
'''这个时间差为datetime.timedelta格式,返回值中days + seconds 为总计的时间,够一天的时间存在days里面,不足的存在seconds里面'''
days = daojishi.days
hour = daojishi.seconds // 3600 #不足一天,看有多少个小时。
mins = (daojishi.seconds % 3600) // 60 #不足一小时的看有多少个分钟
seconds = daojishi.seconds % 60 # 不足一分钟的时间看有多少秒
return days,hour,mins,seconds #返回值便于更直观看剩余多少时间:时分秒
def chose_commodity(self,commodity_list):
# '''勾选指定商品'''
if commodity_list:
for commodity in commodity_list:
commodity_path_id = '//label[@for="%s"]' % commodity
try:
if driver.find_element_by_xpath(commodity_path_id):
driver.find_element_by_xpath(commodity_path_id).click()
print('勾选:', commodity_path_id, '成功')
except:
print('勾选 %s 失败!' % commodity_path_id)
else:
# '''勾选购物车全部商品'''
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click() def buy_all(self,buy_time,commodity_list=None):
# driver.get("https://cart.taobao.com/cart.htm")
driver.find_element_by_id('mc-menu-hd').click() #点击购物车连接
while True:
#勾选商品
self.chose_commodity(commodity_list)
''' 对比当前时间到的话就点击结算,字符串可以直接比较时间大小'''
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if now > buy_time:
print('正在购物......')
try:
# 点击结算按钮
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
time.sleep(0.5)
#点击提交订单按钮
driver.find_element_by_link_text('提交订单').click()
print('订单已提交,请付款')
except:
print('购物车没有商品或者已经提交。')
else:
days,hour,mins,seconds = self.daojishi(buy_time)
print('当前{} 距离 {} 倒计时还有{}天 {}小时 {}分钟 {}秒'.format(now,buy_time,days, hour, mins, seconds))
if days > 1 or hour > 1 or mins > 2:
time.sleep(60)
driver.refresh()
time.sleep(1) if __name__ == '__main__':
taobao = TaoBao()
if taobao.login():
commodity_list = ['J_CheckBox_1338514994390',
'J_CheckBox_1337098032426',
'J_CheckBox_1328527465471']
buy_time = '2019-06-18 23:59:59'
taobao.buy_all(buy_time,commodity_list)
# taobao.daojishi(buy_time)

go_shoping0.2

#!/usr/bin/env python
'''
作者:张铭达
功能:淘宝秒杀购物
版本:0.2
日期2019-06-16
''' from selenium import webdriver
import time,datetime driver = webdriver.Chrome()
driver.maximize_window() username = '张铭达33333'
class TaoBao(object):
def __init__(self):
pass
def login(self):
driver.get('https://www.taobao.com')
time.sleep(0.5)
loginelement = driver.find_element_by_link_text("亲,请登录")
if loginelement:
loginelement.click()
while True:
try:
login_status = driver.find_element_by_link_text('张铭达33333')
print('已登录')
return True
except:
print('等待扫码或密码登录...')
time.sleep(1) def daojishi(self,buytime):
'''
:param buytime: 输入字符串时间
:return: 返回当前距离购买时间还有多少天,小时,分钟,秒
'''
daojishi = datetime.datetime.strptime(buy_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.now()
'''这个时间差为datetime.timedelta格式,返回值中days + seconds 为总计的时间,够一天的时间存在days里面,不足的存在seconds里面'''
days = daojishi.days
hour = daojishi.seconds // 3600 #不足一天,看有多少个小时。
mins = (daojishi.seconds % 3600) // 60 #不足一小时的看有多少个分钟
seconds = daojishi.seconds % 60 # 不足一分钟的时间看有多少秒
return days,hour,mins,seconds #返回值便于更直观看剩余多少时间:时分秒
def chose_commodity(self,commodity_list):
# '''勾选指定商品'''
if commodity_list:
for commodity in commodity_list:
commodity_path_id = '//label[@for="%s"]' % commodity
try:
if driver.find_element_by_xpath(commodity_path_id):
driver.find_element_by_xpath(commodity_path_id).click()
print('勾选:', commodity_path_id, '成功')
except:
print('勾选 %s 失败!' % commodity_path_id)
else:
# '''勾选购物车全部商品'''
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click() def buy_all(self,buy_time,commodity_list=None):
# driver.get("https://cart.taobao.com/cart.htm")
time.sleep(1)
driver.find_element_by_partial_link_text('购物车').click()#点击购物车连接
# driver.find_element_by_id('mc-menu-hd').click() #点击购物车连接
time.sleep(0.5)
while True:
#勾选商品
self.chose_commodity(commodity_list)
''' 对比当前时间到的话就点击结算,字符串可以直接比较时间大小'''
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if now > buy_time:
print('正在购物......')
try:
# 点击结算按钮
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
time.sleep(0.5)
#点击提交订单按钮
driver.find_element_by_link_text('提交订单').click()
print('订单已提交,请付款')
except:
print('购物车没有商品或者已经提交。')
else:
days,hour,mins,seconds = self.daojishi(buy_time)
print('当前{} 距离 {} 倒计时还有{}天 {}小时 {}分钟 {}秒'.format(now,buy_time,days, hour, mins, seconds))
if days > 1 or hour > 1 or mins > 2:
time.sleep(60)
driver.refresh()
time.sleep(1) if __name__ == '__main__':
taobao = TaoBao()
if taobao.login(): #如果登录成功就勾选购物车,并且下单
#商品列表lable标签 浏览器提前用开发者模式获取
commodity_list = ['J_CheckBox_1338514994390',
'J_CheckBox_1337098032426',
'J_CheckBox_1328527465471']
buy_time = '2019-06-18 23:59:59'
taobao.buy_all(buy_time,commodity_list)
# taobao.daojishi(buy_time)

0.3版本

三. 安装三大浏览器驱动driver

1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list

2.Firefox的驱动geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/

3.IE的驱动IEdriver 下载地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/
---------------------
作者:huhu8812
来源:CSDN
原文:https://blog.csdn.net/azsx02/article/details/68947429
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. UE4新手引导入门教程
  2. Fedora 23安装 NS2 (network simulator 2)
  3. PostgreSQL 在centos 7下的安装配置
  4. 使用PHP获取根域名的方法!
  5. HTC Vive 与Leap Motion 出现位置错误的问题
  6. (原)list中null的谨慎使用
  7. 正则表达式之IP地址检验
  8. Java语法基础(二)----运算符
  9. 337. House Robber III——树的题目几乎都是BFS、DFS,要么递归要么循环
  10. Linux下配置JDK与Tomcat
  11. 原生Javascript实现控制DIV属性
  12. stl中的空间配置器
  13. iOS面试贴士
  14. poj1284:欧拉函数+原根
  15. 转载--DEV GridControl 的一些基本操作
  16. spring与hibernate整合事务管理的理解
  17. LoadLibrary失败的原因(转)
  18. sessionStorage数组、对象的存储和读取
  19. sql server 备份与恢复系列四 大容量模式下的备份与还原
  20. Angular4学习笔记(十)- 组件间通信

热门文章

  1. 从零开始学Kotlin第三课
  2. Rainbond通过插件整合SkyWalking,实现APM即插即用
  3. x86汇编反编译到c语言之——(2)if语句
  4. 雪花算法对System.currentTimeMillis()优化真的有用么?
  5. NFLSOJ #10317. -「2020联考北附2」三千世界(找等价表达+树形 dp)
  6. 用pipenv管理python虚拟环境
  7. 毕业设计之dns搭建:
  8. Linux内网时钟同步问题(ntp和chrony)
  9. springcloud - alibaba - 2 - 集成Feign - 更新完成
  10. 巩固javaweb第十七天