python自動下單腳本

點擊上方“後端開發技術”,選擇“設爲星標” 

優質文章和資源,及時送達


自動下單腳本

        閒來無事,寫了一個定時搶購下單的腳本,可用於淘寶和天貓商品的定時秒殺,但是最終付款操作需要手動完成。

        長話短說直接介紹腳本的運行步驟。

  1. 安裝python3

    請自行安裝python 3,如果已安裝版本是python 2,推薦使用版本管理工具。python3:https://www.python.org/downloads/

  2. 安裝所需依賴 

pip install selenium
pip install pillow
如果還有其他缺失 請根據提示 pip install 安裝
需要有chrome瀏覽器和chromedriver,下載鏈接在文章末尾

    3.設置搶購頁面url

    4.設置天貓還是淘寶 

這裏推薦使用默認購物車模式3,代碼中的url也不需要修改,通過購物車下單更快。

    5.設置開搶時間 

    6.運行程序 

    7.掃碼登錄 

    8.選中要購買商品以及相應種類等(必須選中!!!) 

    9.等待自動下單

代碼如下,複製到本地文件格式爲xxx.py,配置運行即可:

# python3.6.5
# coding:utf-8
# 天貓淘寶自動下單 用於定時搶購
import os
from selenium import webdriver
import requests
import time
from selenium.webdriver.chrome.options import Options


# 創建瀏覽器對象
chrome_options = Options()
# 關閉使用 ChromeDriver 打開瀏覽器時上部提示語 "Chrome正在受到自動軟件的控制"
chrome_options.add_argument("disable-infobars")
# 允許瀏覽器重定向,Framebusting requires same-origin or a user gesture


# chrome_options.add_argument('--headless')
driver = webdriver.Chrome(os.path.join(os.path.dirname(__file__), "chromedriver.exe"),
                          chrome_options=chrome_options)
# 窗口最大化顯示
driver.maximize_window()






def login(url, mall):
    '''
    登陸函數


    url:商品的鏈接
    mall:商城類別
    '''
    driver.get(url)
    driver.implicitly_wait(10)
    time.sleep(2)
    # 淘寶和天貓的登陸鏈接文字不同
    if mall == '1':
        # 找到並點擊淘寶的登陸按鈕
        driver.find_element_by_link_text("親,請登錄").click()
    elif mall == '2':
        # 找到並點擊天貓的登陸按鈕
        driver.find_element_by_link_text("請登錄").click()
    print("請在30秒內完成登錄")
    # time.sleep(10)
    # driver.get_screenshot_as_file("login.png")
    # img = Image.open('login.png')
    # 顯示圖片
    # img.show()
    # 用戶掃碼登陸
    time.sleep(30)




def buy(buy_time, mall, time_dif):
    '''
    購買函數


    buy_time:購買時間
    mall:商城類別
    '''
    print("開始購買")
    if mall == '1':
        # "立即購買"的css_selector
        btn_buy = '#J_juValid > div.tb-btn-buy > a'
        # "立即下單"的css_selector
        btn_order = '#submitOrder_1 > div.wrapper > a'
    elif mall == '3':
        btn_buy = '#J_Go'
        btn_order = '#submitOrderPC_1 > div > a'
    else:
        btn_buy = '#J_LinkBuy'
        btn_order = '#submitOrderPC_1 > div > a'


    timeArray = time.strptime(buy_time, "%Y-%m-%d %H:%M:%S")
    # 轉爲時間戳
    timeStamp = int(time.mktime(timeArray))
    print("開始準備購買")


    # checkbox = driver.find_element_by_css_selector("#J_Item_1116006369759 > ul > li > div > div > div")
    # checkbox.click()
    selector = driver.find_element_by_css_selector(btn_buy)
    while True:
        # 現在時間大於預設時間則開售搶購
        tmp_time = time.time()
        if tmp_time >= (timeStamp - time_dif):
            try:
                print("開始購買" + str(time.time()))
                # 找到“立即購買”,點擊
                if selector:
                    print("點擊" + str(time.time()))
                    selector.click()
                    break
            except:
                pass
    while True:
        try:
            # 找到“立即下單”,點擊,
            # print("嘗試提交訂單")
            order_selector = driver.find_elements_by_css_selector(btn_order)
            if order_selector:
                print("購買" + str(time.time()))
                order_selector[-1].click()
                # 下單成功,跳轉至支付頁面
                print("購買成功" + str(time.time() - tmp_time))
                break
            driver.refresh()
        except:
            driver.refresh()
            time.sleep(0.01)




def get_server_time():
    time_start = time.time()
    r1 = requests.get(url='http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp',
                      headers={
                          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'})
    x = eval(r1.text)
    tmp = time.time() - time_start
    timeNum = int(x['data']['t'])


    timeStamp = float(timeNum / 1000)
    print(tmp)
    # timeArray = time.localtime(timeStamp)
    # otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    return timeStamp, tmp
    # driver.quit()


啓動方法:



# 使用方法
# 1 設置url
# 2 設置天貓還是淘寶
# 3 設置開搶時間
# 4 運行程序
# 5 掃碼登錄
# 6 選中要購買商品以及相應種類等(必須選中!!!)
# 7 自動下單
#


if __name__ == "__main__":
    # 輸入要購買物品 url
    # 如果是天貓超市的搶購 請先加入購物車 此處爲購物車鏈接
    url = "https://cart.taobao.com/cart.htm"
    # 請選擇商城(淘寶 1  天貓 2  3 通過購物車 輸入數字:
    mall = '3'
    # 輸入開售時間
    bt = "2020-03-01 15:00:00"
    server_time, tmp = get_server_time()
    time_dif = time.time() - server_time + tmp + tmp
    login(url, mall)
    buy(bt, mall, 2 * time_dif + 0.5)

下載chromedriver

鏈接:

https://pan.baidu.com/s/1EfWys6NzDne3YFNCzBzIAQ  密碼:31mo

最終效果與網速等條件有直接關係,沒接口快但比手工強太多,只是一種思路,不喜勿噴。

希望一切順利。

◆ ◆ ◆  ◆ 

關注並後臺回覆 “面試” 或者  “視頻

即可免費獲取最新2019BATJava

大廠面試題和大數據微服務視頻

您的分享和支持是我更新的動力

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章