天天看點

[Python] 爬蟲學習記錄 - 淘寶秒殺

新手上路之旅~

需要用到selenium架構

安裝selenium指令:pip/pip3 install selenium

我的思想流程:登入 - 檢測是否可以結算 (可以結算就去結算) - 送出訂單

我使用的環境:Python3.6.5 ,火狐浏覽器

需要用到 geckodriver , 下載下傳位址:https://github.com/mozilla/geckodriver/releases

引入工具
# 引入geckodriver,根據您的機器實際路徑
firefox = "/xxx/geckodriver/geckodriver" 
browser = webdriver.Firefox(executable_path= firefox)
browser.maximize_window()
           
登入
# 打開淘寶登入頁,并進行掃碼登入
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'))
           
死循環判斷
# 設定開始時間
	start_time = '2019-06-14 00:00:00.000000'
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        if now > times:
            if browser.find_element_by_id('J_SelectAllCbx2'):
                browser.find_element_by_id("J_SelectAll2").click()
                ## 去往結算方法
                goShip()
                break
        time.sleep(0.01)
           
到時間就去GO結算
# 這裡,需要延遲0.01秒,如果沒有會結算失敗
def goShip():
    time.sleep(0.01)
    while True:
        try:
            if browser.find_element_by_id('J_Go'):
                ship_btn = browser.find_element_by_id('J_Go')
                if ship_btn.get_attribute('class') == "submit-btn":
                    browser.find_element_by_id("J_Go").click()
                    print("結算成功.下一步,送出訂單")
                    # 跳轉到送出訂單方法,請看下面
                    submitOrder()
                    break
                else:
                    if browser.find_element_by_id('J_SelectAllCbx2'):
                        browser.find_element_by_id("J_SelectAll2").click()
        except:
            print("結算發生異常")
           
送出訂單
def submitOrder():
    print("start submit order")
    time.sleep(0.01)
    tijiao_zongshu = 0
    while True:
        tijiao_zongshu += 1
        try:
            if browser.find_element_by_link_text('送出訂單'):
                browser.find_element_by_link_text('送出訂單').click()
                now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
                print("搶購成功時間:%s" % now1)
                break
        except:
            print('再次嘗試送出訂單,目前第 %s 次送出' % tijiao_zongshu)
           

好了,謝謝您的觀看。