今天是10·24程序员节,首先祝自己节日快乐
双十一马上就要到了,今天带大家 定点 剁手!!!
开始前的准备:python、PyCharm、一部手机
我们的计划:
配置
首先我们需要用到selenium
打开CMD 输入
pip install -i https://pypi.douban.com/simple/ selenium # 使用国内镜像下载更快
接着我们还需要下载Chrome浏览器驱动
根据我们的Chrome浏览器版本去下载对应的driver(驱动)
浏览器版本可以通过
【帮助】- 【关于Google Chrome】获取
这里笔者的版本是
- 版本 76.0.3809.132(正式版本) (64 位)
所以选择下图版本
选择对应自己操作系统的版本 下载
解压,将其放置在Python安装路径下Scripts文件夹中即可。
好了
接着打开我们的PyCharm(关注我的公众号 回复 【激活码】 获取激活)
测试一下我们的chromedriver能否正常使用
from selenium import webdriver
browser = webdriver.Chrome()
如果能弹出一个空白的Chrome窗口 那么恭喜你 基本配置都完成了
模拟登录淘宝
我们通过selenium模拟打开淘宝
browser.get("https://www.taobao.com")
接着需要模拟点击【登录】
browser.find_element_by_link_text("亲,请登录").click()
页面会跳到 登录 页面,此时掏出手机扫个码登录(也可以用自动输入账号密码来登录,但是如果有验证码 将会非常复杂)
打开购物车与结算
登陆后,进入到 购物车 界面
browser.get("https://cart.taobao.com/cart.htm") # 进入购物车页面
找到全选按钮(虽然不可能 全选!!!)
通过id获取元素 并执行点击操作
browser.find_element_by_id("J_SelectAll1").click()
掐秒提交订单
结算后 自然就到了 提交订单页面,这里需要提前将默认地址、收货人设置好,省的麻烦。
browser.find_element_by_link_text('提交订单').click()
当然 我们还要做一个时间的控制,当系统时间>=抢购时间时 ,执行提交订单操作。
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') # 当前时间
if now >= qg_time: # 为自己设置的抢单时间
browser.find_element_by_link_text('提交订单').click()
付钱
付钱就不用心急了啦
大体的思路就是这样
源码
可以通过 传送门 去查看
这里放上部分代码
if __name__ == '__main__':
print("剁手啦! 请连接至快速网络环境下")
qg_time = '2019-11-11 00:00:00.0' # 默认抢购时间 双十一当日0点
jg_time = 1 # 抢单间隔刷新时间 默认1秒
while True:
qg_time = input("请输入抢购时间(格式为yyyy-mm-dd hh:mm:ss): ")
jq_time = input("请输入抢购间隔时间(默认为1秒): ")
if len(qg_time) < 19:
print("请输入抢购时间,注意格式例如2019-11-11 00:00:00")
else:
break
# 打开Chrome浏览器
browser = webdriver.Chrome()
open_login(browser, qg_time, jg_time)
def open_login(browser, qg_time, jg_time):
browser.get("https://www.taobao.com")
time.sleep(3) # 给3s的时间渲染页面
browser.find_element_by_link_text("亲,请登录").click()
time.sleep(15) # 用于手机扫码
browser.get("https://cart.taobao.com/cart.htm") # 进入购物车页面
time.sleep(3)
try:
browser.find_element_by_id("J_SelectAll1").click() # 点击全选
except Exception as e:
print(e)
print('选择异常,请重试')
pass
time.sleep(15) # 给时间选择想要抢购的物品
try:
browser.find_element_by_id("J_Go").click() # 点击结算
quick_flight(qg_time, browser, jg_time)
except Exception as e:
print(e)
def quick_flight(qg_time, browser, jq_time):
count = 0 # 计数器
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
if now >= qg_time: # 抢购开始!
count += 1 # 计数器+1
try:
browser.find_element_by_link_text('提交订单').click()
print("抢购成功,进入支付界面")
break
except:
print("正在第"+str(count)+"次重试")
time.sleep(jq_time) # 间隔(可以由自己设置)
大家可以关注公众号 获取更多资讯
【再喝最后一杯珍珠奶茶】