日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python超市买苹果_官网购买的iPhone12pro还没发货?试着用Python快速入手

發布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python超市买苹果_官网购买的iPhone12pro还没发货?试着用Python快速入手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

?iPhone12pro有望成為2020年末真香機,動輒3000元的溢價讓不少消費者選擇了等待官網調貨。除了官方與電商線上平臺,蘋果還采用了線下預約制提貨。但每天少的可憐的出貨量,和不到一秒鐘就搶空的預約名額讓“老年人”手速的各位望而卻步。傳統的“先到先得”式的預約方式,以實時性,隊列性模式為特點,簡單來說也就是我們所說的“先到先得”。Python作為被廣泛運用的腳本語言,可通過計劃任務,將操作延時降到最低,以最大化獲得預約資格的可能性。除了用于Apple官網,此教程亦可用于sneaker等球鞋發售平臺。

本文采用 Selenium自動化測試模塊,配合Chromedriver實現,推薦入門級新手編寫。

Part 1: 環境配置

Python版本:3.8

pip版本:20.2.4

1.安裝Selenium

windows用戶打開cmd,mac用戶打開Terminal(終端),本文采用windows演示

在控制臺中輸入 pip install selenium

CMD控制臺

出現如下輸出則說明Selenium安裝成功

安裝成功

?在控制臺中輸入python,于第一行輸入 import selenium

?如未出現Module報錯,則驗證Selenium已安裝成功。

2. 安裝chromedriver

Chromedriver為給予chromium內核,用于自動化測試的可編程式瀏覽器。如果Selenium是大腦,那么Cromedriver則是由大腦控制的軀干,缺一不可。

將下載的文件移入與項目相同的目錄下(這里非常重要,否則會導致瀏覽器無法被正確調用)

復制chromedriver到項目文件夾

?測試代碼:

?運行后,如呼出chrome瀏覽器則說明chromedriver被正確配置

?如果你已走到這一步,Congrats, 你已經成功一半了!

Part 2: 檢測商店是否可用

蘋果預約通道將于每天早上6點刷新,如果預約名額已滿或者商店未到預約時間將會顯示如下頁面

商店不可用

?右鍵檢查元素,發現如果商店不可用則會出現H1 “我們零售店目前不接受 iPhone 的預約購買。”

?

判斷商店是否可用的邏輯就是這么簡單粗暴,如果出現這行字則商店不可用,反之亦然。

下面為實現邏輯代碼:

?

?

?運行效果:

?控制臺將每秒輸出當前商店的狀態

?

Part 3: 實時獲取各零售店的預約情況

上文中提到,iPhone12 Pro商店預約資格已滿,下文則使用iPhone 12的頁面演示(兩者頁面布局相同,僅鏈接及部分按鈕id不同)

進入預約頁面,觀察網頁布局

?透過觀察,我們發現,在選擇顏色以及容量之前,選擇零售店的按鈕是不可用的。第一步我們需要選擇需要的顏色以及容量。右鍵按鈕,檢查元素即可獲得改按鈕在頁面中的絕對位置xpath

一下以藍色 64G舉例

顏色

?

容量

下一步,選擇地區。我們通過點擊發現,如果選擇一個城市的零售店,下面將會自動列出相應城市的其他零售店,所以在第一個選擇框,我們只需任意選擇一個相應城市的零售店。

?通過前端代碼,驚喜地發現,蘋果把每一家店通過Rxx的形式描述。

從某種意義上來說,這幾個按鈕可以幫助我們判斷零售店是否可以供我們預約

不可用

?也就是說,如果按鈕可以按下,則說明預約是可用的,相反,如果按鈕無法按下,則當前零售店不可用。

整理一下邏輯,判斷零售店預約情況可被分為三步

1.官網預約通道是否開啟(part 2 中提到)

?2.選擇我們想要的顏色以及容量

3.選擇地區

4.判斷地區零售店按鈕是否可用來返回零售店狀態

完整實現代碼如下:

try:

from selenium import webdriver

from selenium.webdriver.support.select import Select

from selenium.webdriver.chrome.options import Options

import prettytable as pt

import os

except ModuleNotFoundError as e:

print("缺少依賴模塊,正在安裝")

import os

p = os.popen("pip install selenium")

print(p.read())

p = os.popen("pip install prettytable")

print(p.read())

from selenium import webdriver

from selenium.webdriver.support.select import Select

from selenium.webdriver.chrome.options import Options

import prettytable as pt

import time

import threading

#初始化瀏覽器

storeOne = webdriver.Chrome()

storeTwo = webdriver.Chrome()

storeThree = webdriver.Chrome()

#初始化狀態列表

storeStatus = pt.PrettyTable()

storeStatus.field_names = ["Name","Status"]

statusList = []

#帶狀態的輸出方法

def push(info, flag):

type = {"SUCCESS":"32","WARNING":"33","FAILED":"31"}

color = type[flag]

localtime = time.asctime( time.localtime(time.time()) )

print("\033[0;%s;40m\t" % color+localtime+": "+info+"\033[0m" )

#判斷商店是否可用

def isResAvaliable(b):

succuss = "立即預約購買你的新 iPhone。"

try:

if b.find_element_by_xpath(xpath="//h1").text == succuss:

return True

except:

return False

return False

#選擇手機種類

def purchase(browser:webdriver.Chrome):

try:

color = browser.find_element_by_xpath(xpath="//section[@id='product-selector']/fieldset[2]/ul/li[4]/div/label/div")

color.click()#選擇顏色

except:

push("COLOR CHOOSE ERROR","FAILED")

return False

try:

capacity = browser.find_element_by_xpath(xpath="//label[@id='capacity-1-label']")

capacity.click()#選擇容量

except:

push("CAPACITY CHOOSE ERROR","FAILED")

return False

try:

store = browser.find_element_by_xpath(xpath="//select[@id='anchor-store']")

Select(store).select_by_value("R493")#選擇地區

except:

push("STORE UNAVALIABLE","FAILED")

return False

#南京艾尚天地

def Store_1(table:pt):

storeOne.get("https://reserve-prime.apple.com/CN/zh_CN/reserve/F/availability?iUP=N")

time.sleep(3)

if isResAvaliable(storeOne):

purchase(browser=storeOne)

status = storeOne.find_element_by_xpath(xpath="//input[@id='store-R703']").is_enabled()

if status:

statusList.append(["南京艾尚天地", "Available"])

else:

statusList.append(["南京艾尚天地", "NO"])

else:

statusList.append(["南京艾尚天地", "STORE IS CLOSED"])

#南京虹悅城

def Store_2(table:pt):

storeTwo.get("https://reserve-prime.apple.com/CN/zh_CN/reserve/F/availability?iUP=N")

time.sleep(3)

if isResAvaliable(storeTwo):

purchase(browser=storeTwo)

status = storeTwo.find_element_by_xpath(xpath="//input[@id='store-R643']").is_enabled()

if status:

statusList.append(["南京虹悅城","Available"])

else:

statusList.append(["南京虹悅城", "NO"])

else:

statusList.append(["南京虹悅城", "STORE IS CLOSED"])

def Store_3(table:pt):

storeThree.get("https://reserve-prime.apple.com/CN/zh_CN/reserve/F/availability?iUP=N")

time.sleep(3)

if isResAvaliable(storeThree):

purchase(browser=storeThree)

status = storeThree.find_element_by_xpath(xpath="//input[@id='store-R493']").is_enabled()

if status:

statusList.append(["南京金茂匯", "Available"])

else:

statusList.append(["南京金茂匯", "NO"])

else:

statusList.append(["南京金茂匯", "STORE IS CLOSED"])

def showStores():

for status in statusList:

storeStatus.add_row(status)

while True:

os.system("CLS")

push("iphone 12, 藍色, 128G 實時商店預約狀態","WARNING")

print(storeStatus)

push("--Update Time","WARNING")

time.sleep(3)

if __name__ == '__main__':

threads = []

t1 = threading.Thread(target=Store_1,args=(storeStatus,))#商店1線程

threads.append(t1)#加入線程池

t2 = threading.Thread(target=Store_2,args=(storeStatus,))#商店2線程

threads.append(t2)#加入線程池

t3 = threading.Thread(target=Store_3,args=(storeStatus,))#商店3線程

threads.append(t3)#加入線程池

count = 0

for t in threads:#運行線程

t.start()

count+=1

push("Waiting Server "+str(count)+"returning data","SUCCESS")

time.sleep(1)

for t in threads:#在瀏覽器獲得信息之前不刷新表格

t.join()

showStores()#輸出狀態

?簡單的加一點細節,一個簡單的判斷是否可以預約的程序就完成啦!

效果運行如下:

?到此為止,你已經基本知道該如何使用selenium了,也對網頁分析以及判斷的邏輯有了基本的認識,下一章我們將實現購買和完成預約,

點贊過20下周更新

點贊過50后天更新

點贊過100磕著護肝藥立馬更新T_T

聲明!!!:

本文僅用作個人學習使用,禁止用于任何違法活動,所產生的后果與代碼作者無關

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python超市买苹果_官网购买的iPhone12pro还没发货?试着用Python快速入手的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本激情视频在线 | 奇米影视777第四色 2019中文字幕在线免费观看 | 欧美综合视频在线 | 少妇高潮毛片色欲ava片 | 国产成人一区二区在线 | 亚洲 欧美 自拍偷拍 | 电影《走路上学》免费 | 99国产精品99久久久久久 | 香蕉视频免费在线看 | 久操热久操 | 蜜桃av一区二区 | 成人在线视频一区 | 国产牛牛 | 一区二区三区国产视频 | 久久99一区| 2019国产在线 | 国产成人精品一区二三区四区五区 | 视频在线一区 | 国产无套在线观看 | 国产中文字幕91 | 波多野结衣中文一区 | 国模无码视频一区 | jizz日本在线 | 奇米一区| 久久免费片 | 毛片综合 | a√在线 | 5月婷婷6月丁香 | 欧美草比视频 | 免费91网站| 青青青国产 | 免费久久精品视频 | 亚洲色图偷 | 国产黄a三级三级三级看三级男男 | 亚洲a中文字幕 | 国产精品va在线观看无码 | 91国内精品视频 | 国产精品传媒 | 黄色91免费| 国产一区二区三区18 | 99cao| 欧美日批视频 | 又色又爽又黄gif动态图 | 一区二区免费在线观看 | 久久久久国产精品熟女影院 | 中文字幕免费在线视频 | xxxxx黄色片 噜噜噜噜噜色 | 国产精品久久久久毛片大屁完整版 | 中文成人在线 | 波多野吉衣一区二区三区 | 亚洲国产三级 | 国产精品入口66mio男同 | 精品国产一二三四区 | 国产大尺度视频 | 成人四色| аⅴ资源新版在线天堂 | 日韩手机在线观看 | 国产午夜福利一区二区 | 波多野结衣乳巨码无在线 | 色多多在线视频 | 日韩欧美理论 | 嫩草在线看| 欧美日韩黄色大片 | 日本免费不卡 | 国产精品爱啪在线线免费观看 | 久久国产中文字幕 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 久久久精品视 | 国产综合免费视频 | 国产福利一区二区 | 久久精品一区二 | 青草青青视频 | 色窝窝无码一区二区三区成人网站 | 无码无遮挡又大又爽又黄的视频 | 男人天堂2020 | 日本www视频在线观看 | www.四虎精品 | 国产欧美日韩综合精品一区二区三区 | av色在线观看 | 在线视频你懂得 | 天天操欧美 | 国产精久久久 | 超碰在线资源 | 国产视频在线观看网站 | 日韩国产亚洲欧美 | 国产精品久久久久久久久久直播 | 在线黄色免费 | 亚洲在线视频播放 | 亚洲综合大片69999 | 超碰在线最新 | 深夜av在线| 国内少妇精品 | 99re6热在线精品视频播放 | 黄色大片aaa | 欧美黄色性 | 国产精品一区二区三区线羞羞网站 | 精品中文字幕一区二区 | 黄色一级片免费在线观看 | 精品免费在线视频 |