1. 程式人生 > >用Python完成毫秒級搶單,助你秒殺淘寶大單

用Python完成毫秒級搶單,助你秒殺淘寶大單

目錄:

  1. 引言
  2. 環境
  3. 需求分析&前期準備
  4. 淘寶購物流程回顧
  5. 秒殺的實現
  6. 程式碼梳理
  7. 總結

0 引言

年中購物618大狂歡開始了,各大電商又開始了大力度的折扣促銷,我們的小胖又給大家謀了一波福利,淘寶APP直接搜尋:小胖發福利,每天領取三次粉絲專屬現金大紅包。

有了現金大紅包,如何做到更省錢的剁手呢?今天給大家提供一種思路,用Python實現秒殺訂單,借用自動化方式完成最優解。

1 環境

作業系統:Windows

Python版本:3.7.2

2 需求分析&前期準備

2.0 需求分析

我們的目標是秒殺淘寶的訂單,這裡面有幾個關鍵點,首先需要登入淘寶,其次你需要準備好訂單,最後要在指定時間快速提交訂單。

登入淘寶,這裡就要用到一個爬蟲利器Selenium,它是一個自動化測試工具,利用它我們可以驅動瀏覽器執行特定的動作,如點選、下拉等等操作,所見即所得。另外對於一些 JavaScript 渲染的頁面來說,此種抓取方式非常有效。

2.1 Selenium的安裝

Selenium 的安裝很簡單,可採用如下方式。

pip install selenium

Selenium安裝好之後,並不能直接使用,它需要與瀏覽器進行對接。這裡拿Chrome瀏覽器為例。若想使用Selenium成功呼叫Chrome瀏覽器完成相應的操作,需要通過ChromeDriver來驅動。

2.2 ChromeDriver的安裝

這裡是ChromeDriver的官方下載地址。

連結:

https://chromedriver.storage.googleapis.com/index.html

我們在下載之前先來確認下我們使用的Chrome瀏覽器版本。

在這裡插入圖片描述

通過ChromeDriver的下載連結,找到與之對應的Chrome瀏覽器版本,根據你電腦系統的平臺型別進行下載。

在這裡插入圖片描述 在這裡插入圖片描述

下載完成之後,解壓,將其放置在Python安裝路徑下Scripts資料夾中即可

在這裡插入圖片描述

上述操作結束後,我們執行如下命令,測試一下

from selenium import webdriver
# 開啟Chrome瀏覽器
browser = webdriver.Chrome()

程式碼執行後,若成功打開了瀏覽器,則證明你的ChromeDriver安裝的沒問題,可以正常愉快地使用Selenium了。

接下來,我們先來回顧下淘寶購物流程。

3 淘寶購物流程回顧

3.1 首先要開啟淘寶網站

https://www.taobao.com

換作使用Seleuinm方式,程式碼如下:

browser.get("https://www.taobao.com")

3.2 我們登入淘寶才能進行下一步操作

在這裡插入圖片描述 換成Seleuinm方式,程式碼:

browser.find_element_by_link_text("親,請登入").click()

這時我們就要就跳到了一個掃碼登入的頁面,我們用手機進行掃碼,登入成功之後進行下一步。

3.3 登入成功之後,我們來開啟購物車,連結如下:

https://cart.taobao.com/cart.htm

換成Seleuinm方式,程式碼:

browser.get("https://cart.taobao.com/cart.htm")

3.4 我們想要全選購物車中的商品,直接點選全選即可

在這裡插入圖片描述

換成Seleuinm方式,程式碼:

browser.find_element_by_id("J_SelectAll1").click()

注:若你的購物車商品比較多,又不想全選購買,那就 手動 勾選想要下單的商品。

3.5 勾選好商品後就可以“結算”下單

在這裡插入圖片描述

換成Seleuinm方式,程式碼即:

browser.find_element_by_link_text("結 算").click()

3.6 等待提交完訂單後才算數

在這裡插入圖片描述

換成Seleuinm方式,程式碼即:

browser.find_element_by_link_text('提交訂單').click()

3.7 訂單成功秒下之後,接下來的付款,慢慢來就好。

在這裡插入圖片描述

4 秒殺的實現

秒殺的實現,思路也很簡單。這裡有兩個時間點,一是搶購時間,一是當前時間。只需要比較這兩個時間點,到了搶購時間立即下單即可。

記錄時間,需要使用datetime這個內建模組,程式碼如下:

import datetime
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

5 程式碼梳理

首先得登入淘寶,這裡我們定義一個login函式

def login():
    # 開啟淘寶首頁,通過掃碼登入
    browser.get("https://www.taobao.com")
    time.sleep(3)
    if browser.find_element_by_link_text("親,請登入"):
        browser.find_element_by_link_text("親,請登入").click()
        print(f"請儘快掃碼登入")
        time.sleep(10)

接下來就是勾選購物車中的商品,這裡我們定義一個picking函式

def picking(method):
    # 開啟購物車列表頁面
    browser.get("https://cart.taobao.com/cart.htm")
    time.sleep(3)


    # 是否全選購物車
    if method == 0:
        while True:
            try:
                if browser.find_element_by_id("J_SelectAll1"):
                    browser.find_element_by_id("J_SelectAll1").click()
                    break
            except:
                print(f"找不到購買按鈕")
    else:
        print(f"請手動勾選需要購買的商品")
        time.sleep(5)

等待搶購時間,定時秒殺,這裡我們定義一個buy函式

def buy(times):
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        # 對比時間,時間到的話就點選結算
        if now > times:
            # 點選結算按鈕
            while True:
                try:
                    if browser.find_element_by_link_text("結 算"):
                        browser.find_element_by_link_text("結 算").click()
                        print(f"結算成功,準備提交訂單")
                        break
                except:
                    pass
            # 點選提交訂單按鈕
            while True:
                try:
                    if browser.find_element_by_link_text('提交訂單'):
                        browser.find_element_by_link_text('提交訂單').click()
                        print(f"搶購成功,請儘快付款")
                except:
                    print(f"再次嘗試提交訂單")
            time.sleep(0.01)

6 總結

短短几十行程式碼就能秒殺淘寶訂單,趕緊行動起來吧!

關注公眾號「Python專欄」,後臺回覆「搶單器」獲