我們的目標是秒殺淘寶或京東等的訂單,這裡面有幾個關鍵點,首先需要登錄淘寶或京東,其次你需要准備好訂單,最後要在指定時間快速提交訂單。
這裡就要用到一個爬蟲利器Selenium,Selenium是一個用於Web應用程序測試的工具,Selenium可以直接運行在浏覽器中,通過後台控制操作浏覽器,完成購買操作,利用它我們可以驅動浏覽器執行特定的動作,搶購腳本就是通過Selenium來完成自動登錄和自動購買的操作的。
操作系統:Win10
Python版本:3.7.4
Chrome浏覽器版本:100.0.4896.60
ChromeDriver版本:100.0.4896.60
ChromeDriver下載:下載地址
注意:Chrome浏覽器版本和ChromeDriver版本要保持一致
步驟一:將下載好的chromedriver.exe文件放置到chrome浏覽器所在目錄
步驟二:復制該目錄配置到Windows系統環境變量中
步驟三:我的電腦→屬性→高級系統設置→環境變量→系統變量→Path→編輯→新建,將復制的目錄粘貼確定即可,注意:要一路確定返回。
Selenium模塊是Python的第三方庫,可以通過pip進行安裝
pip install selenium
或python中導入
from selenium import webdriver
import datetime
import time
# 連接Chrome浏覽器
driver = webdriver.Chrome()
def login(url):
# 打開淘寶登錄頁,並進行登錄
driver.get("https://www.taobao.com")
time.sleep(3)
if driver.find_element_by_link_text("親,請登錄"): # F12 點擊事件name定位(注意空格)
driver.find_element_by_link_text("親,請登錄").click()
print("請在20秒內完成登錄")
time.sleep(20)
driver.get(url)
time.sleep(3)
now = datetime.datetime.now()
print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))
def buy(buytime):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對比時間,時間到的話就點擊結算
if now >= buytime:
try:
# 立即搶購
if driver.find_element_by_id("J_LinkBuy"): # F12 點擊事件id定位
print("速度點擊!!!")
driver.find_element_by_id("J_LinkBuy").click()
time.sleep(0.09)
while now >= buytime:
try:
print("趕緊買!!!")
# 提交訂單
if driver.find_element_by_class_name('go-btn'): # F12 點擊事件class定位
driver.find_element_by_class_name('go-btn').click()
except:
time.sleep(0.02)
except:
time.sleep(0.08)
print(now)
time.sleep(0.05)
# 定位元素方式三種任何一個都可以使用過,實際使用自由組合。
# (1)id定位 driver.find_element_by_id("id")
# (2)name定位 driver.find_element_by_name("name")
# (3)class定位 driver.find_element_by_class_name("class_name")
# 搶購主函數
if __name__ == "__main__":
times = input("請輸入搶購時間:時間格式:2021-12-29 19:45:00.000000")
url = input("請輸入搶購地址")
login(url)
buy(times)
from selenium import webdriver
import datetime
import time
def login():
# 打開淘寶登錄頁,並進行掃碼登錄
browser.get("https://www.jd.com")
time.sleep(3)
if browser.find_element_by_link_text("你好,請登錄"):
browser.find_element_by_link_text("你好,請登錄").click()
print("======請在30秒內完成登錄")
time.sleep(30)
browser.get("https://cart.jd.com")
time.sleep(3)
now = datetime.datetime.now()
print('======login success:', now.strftime('%Y-%m-%d %H:%M:%S'))
time.sleep(5)
def buy(times, choose):
# 點擊購物車裡全選按鈕
if choose == 2:
print("======請手動勾選需要購買的商品")
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對比時間,時間到的話就點擊結算
if now > times:
if choose == 1:
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_id('order-submit'):
browser.find_element_by_id('order-submit').click()
now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print("======搶購成功時間:%s" % now1)
except:
print("======再次嘗試提交訂單")
time.sleep(0.01)
# 定位元素方式三種任何一個都可以使用過,實際使用自由組合。
# (1)id定位 driver.find_element_by_id("id")
# (2)name定位 driver.find_element_by_name("name")
# (3)class定位 driver.find_element_by_class_name("class_name")
# 搶購主函數
if __name__ == "__main__":
times = input("請輸入搶購時間,格式如(2018-09-06 11:20:00.000000):")
browser = webdriver.Chrome()
browser.maximize_window()
login()
choose = int(input("到時間自動勾選購物車請輸入“1”,否則輸入“2”:"))
buy(times, choose)
本篇文章主要介紹了Python 通過selenium實現毫秒級自動搶購的示例代碼,通過掃碼登錄即可自動完成一系列操作,搶購時間精確至毫秒,可搶加購物車等待時間結算的,也可以搶聚劃算、火車票等的商品。
博主不提供任何服務器端程序,也不提供任何收費搶購軟件。該文章僅作為學習selenium框架的一個示例代碼。該思路可運用到其他任何網站,京東,天貓,淘寶均可使用,且不屬於外掛或者軟件之類,只屬於一個自動化點擊工具,如有侵犯到任何公司的合法權益,會第一時間將相關代碼給予刪除。
先自我介紹一下,小編13年上師交大畢業,曾經在小公司待過,去過華為OPPO等大廠,18年進入阿裡,直到現在。深知大多數初中級java工程師,想要升技能,往往是需要自己摸索成長或是報班學習,但對於培訓機構動則近萬元的學費,著實壓力不小。自己不成體系的自學效率很低又漫長,而且容易碰到天花板技術停止不前。因此我收集了一份《java開發全套學習資料》送給大家,初衷也很簡單,就是希望幫助到想自學又不知道該從何學起的朋友,同時減輕大家的負擔。添加下方名片,即可獲取全套學習資料哦