小米手機的確太難搶了,所以試着寫了個程序玩下,還不知道行不行,明天試試!不過,還是要增加多個帳號一起搶,概率還是要大些,黃牛就是使用多帳號搶的!先附上源代碼,有什麼不對地方,大家幫忙指正!
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import time
import os
from selenium import webdriver
class SubscribeTel(object):
def __init__(self, username, passwd):
self.username = username
self.passwd = passwd
self.login_url = 'https://account.xiaomi.com/pass/serviceLogin' # 小米登錄網址
self.login_sec = 'https://account.xiaomi.com/pass/auth/security/home' # 小米登錄成功後網址
self.sub_url = 'https://item.mi.com/product/10000085.html' # 小米min 2s 網址
# 瀏覽器名稱
self.driver_name = 'firefox' # chrome firefox
# 火狐瀏覽器第三方驅動
self.executable_path = os.getcwd()+'/geckodriver' # 獲取工程目錄下的火狐驅動 chromedriver
def login(self):
# 訪問登錄網址
self.browser.get(self.login_url)
# 填充用戶名
self.browser.find_element_by_name('user').send_keys(self.username)
time.sleep(0.3)
# 填充密碼
self.browser.find_element_by_name('password').send_keys(self.passwd)
# 登錄
self.browser.find_element_by_id('login-button').click()
# 循環等待登錄,登錄成功,跳出循環
while True:
if self.browser.current_url[:50] != self.login_sec:
time.sleep(1)
else:
# logbticket.info("登陸成功...")
print('登錄成功...')
break
def start_sub(self):
# 創建一個瀏覽器對象
self.browser = webdriver.Firefox()
# 設置窗口大小尺寸
self.browser.set_window_size(1400, 1000)
# 用戶登錄
self.login()
# 進入預購頁面
self.browser.get(self.sub_url)
self.browser.implicitly_wait(2)
if self.browser.find_element_by_xpath("//a[@data-name='立即預約']"):
self.browser.find_element_by_xpath("//a[@data-name='立即預約']").click()
# 選擇內存
self.browser.find_element_by_xpath("//li[@data-name='6GB+128GB']").click()
# 選擇顏色
self.browser.find_element_by_xpath("//img[@alt='白色']").click()
while True:
times = self.browser.find_element_by_xpath("//span[@class='time J_orderTime']").text
if times == u'剩 00 時 00 分 00 秒':
self.browser.find_element_by_xpath("//a[@data-name='加入購物車']").click()
print('加入購物車成功...')
break
else:
time.sleep(0.5)
if __name__ == '__main__':
username = 'xxxxxxxxx'
passwd = 'xxxxxxx'
Tel = SubscribeTel(username, passwd)
Tel.start_sub()