愛鋒貝

 找回密碼
 立即注冊

只需一步,快速開始

扫一扫,极速登录

查看: 324|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

python | 在商品頁面秒殺

[復(fù)制鏈接]

1409

主題

1491

帖子

5885

積分

Rank: 8Rank: 8

跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2023-3-15 03:49:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

一鍵注冊,加入手機圈

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊   

x

上次手寫了一個在購物車結(jié)算秒殺的腳本,有朋友問有沒有在商品頁秒殺的腳本,于是他來了。
思路


  • 打開需要秒殺商品的頁面(會提示你登錄,掃碼登錄)
  • 選擇商品的規(guī)格,不然是購買不了的(手動)
  • 定時器刷新頁面,如果有貨,則購買
  • 點擊購買按鈕,進入結(jié)算
  • 點擊結(jié)算,進入交易
  • 這個時候,要么你直接在網(wǎng)站上面輸入密碼,要么你打開手機淘寶,可以看到待支付訂單,說明是搶到了,需要支付了。
代碼

from selenium import webdriver
from selenium.webdriver.common.by import By
import re
import datetime
import time
import threading

# 啟動瀏覽器的驅(qū)動器
driver = webdriver.Chrome()
# 最大化瀏覽器
driver.maximize_window()

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
}

# 需要搶購的商品頁面鏈接
url = "https://detail.tmall.com/item.htm?areaId=610100&cat_id=2&id=42302551887&is_b=1&rn=ee9ddd89a20cdfdbf21dbcf8c4f6a6da&skuId=4228835266195&spm=a220m.1000862.1000725.1.7cdb8dfc4OMuMJ"


def open():
    driver.get(url)
    print('請在15秒內(nèi)掃碼登錄')
    time.sleep(15)
    print('請在15秒內(nèi)選擇購買商品的規(guī)格')
    time.sleep(15)
    find()


def find():
    # 查找數(shù)量
    if driver.find_element(By.CLASS_NAME, 'quantityTip'):
        text = re.compile('有貨').findall(
            driver.find_element(By.CLASS_NAME, 'quantityTip').text)
        print('text', text)
        if len(text) > 0:
            # 有貨的話,直接購買
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            print("有貨時間:%s" % now)
            buy(len(text))
        else:
            # 定時器刷新頁面
            driver.refresh()
            timer = threading.Timer(1, find)
            timer.start()


def buy(num):
    # 查找購買按鈕
    if driver.find_elements(By.CLASS_NAME, 'Actions--leftBtn--3kx8kg8'):
        while True:
            # 如果有貨的話
            if num > 0:
                try:
                    driver.find_elements(
                        By.CLASS_NAME, 'Actions--leftBtn--3kx8kg8')[0].click()
                    print('進入結(jié)算頁面')
                    time.sleep(0.01)
                    submit()
                except:
                    pass
            break


def submit():
    while True:
        try:
            if driver.find_element(By.LINK_TEXT, '提交訂單'):
                driver.find_element(By.LINK_TEXT, '提交訂單').click()
                now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
                print("搶購成功時間:%s" % now)
                break
        except:
            print("再次嘗試提交訂單")
            time.sleep(0.01)


open()
結(jié)論



能夠正常搶到商品。明天寫一個nodejs版本的。

-----------------------------
精選高品質(zhì)二手iPhone,上愛鋒貝APP
您需要登錄后才可以回帖 登錄 | 立即注冊   

本版積分規(guī)則

QQ|Archiver|手機版|小黑屋|愛鋒貝 ( 粵ICP備16041312號-5 )

GMT+8, 2025-2-24 16:11

Powered by Discuz! X3.4

© 2001-2013 Discuz Team. 技術(shù)支持 by 巔峰設(shè)計.

快速回復(fù) 返回頂部 返回列表