Python制作某電商平台商品競拍腳本,能自動定時、搶拍、購買


前言

在京東 淘寶中有很多特價商品,但是有些商品屬於限量購買,需要搶拍。有很多黃牛通過非法腳本獲取大量限購商品訂單來獲取利益。

那么像這種搶拍軟件是如何做到的呢

今天老師就帶領大家使用selenium 自動測試框架來完成自動控制瀏覽器下單的操作

 

Python從零基礎入門到實戰系統教程、源碼、視頻,想要數據集的同學也可以點這里

環境

  • python3
  • selenium
  • 火狐瀏覽器/谷歌瀏覽器

1. 導入相關工具包

# 瀏覽器驅動
from selenium import webdriver
# 時間戳
import datetime
# 時間包 控制程序的休眠指令
import time

 

 

為什么一定要用到瀏覽器驅動呢?

因為Python語言是無法直接對瀏覽器下達指令的,所以需要一個翻譯(驅動)對Python下達的指令進行轉發

2. 通過函數去完成相關的功能

def login():
    # 打開淘寶登錄頁,並進行掃碼登錄
    browser.get("https://www.taobao.com")
    # 等待頁面加載
    time.sleep(1)

if __name__ == "__main__":
    browser = webdriver.Firefox(executable_path='./geckodriver.exe')

 

 

這樣就可以自動打開瀏覽器

3. 用xpath語法定位按鈕

if browser.find_element_by_link_text("親,請登錄"):
    browser.find_element_by_link_text("親,請登錄").click()
    browser.find_element_by_xpath('//*[@id="login"]/div[1]/i').click()
    print("請在10秒內完成掃碼")
    # 通過用戶操作手機進行掃碼
    time.sleep(3)

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

 

需要記錄當前進入購物車的時間戳

now = datetime.datetime.now()
print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))

 

購買時間

def buy(times):
    # 死循環
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        # 購買時間誤差不能超過1秒,所以要用毫秒級別的單位

 

時間對比,時間到的話就點擊結算

if now > times:
    while True:
        try:
            if browser.find_element_by_id("J_SelectAll2"):
                browser.find_element_by_id("J_SelectAll2").click()
                break
        except:
            print("找不到購買按鈕")
    # 點擊結算按鈕
    while True:
        try:
            if browser.find_element_by_link_text("結 算"):
                browser.find_element_by_link_text("結 算").click()
                print("結算成功")
                break
        except:
            pass

 

點擊訂單

while True:
    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("再次嘗試提交訂單")
time.sleep(0.01)

 

設置搶購時間

times = input("請輸入搶購時間,格式如(2021-08-16 11:20:00.000000):")
buy(times)

 

運行代碼

這樣這個腳本算是完成了,當然,你還可以直接設置自動填寫支付密碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM