日韩性视频-久久久蜜桃-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快速入手的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 二男一女一级一片 | 亚洲欧美电影 | 丝袜诱惑av| 黄色一级播放 | 国产精品久久久久久久久久久免费看 | 中文在线观看免费 | 国产精品久久久久久福利 | 欧美一区二区三区 | 男人天堂色 | 色片在线免费观看 | 天天综合一区 | 老太脱裤让老头玩ⅹxxxx | 日韩少妇诱惑 | 日韩一级黄色大片 | 久久久久99精品成人片毛片 | 美女av一区二区 | 亚洲欧美日韩精品在线 | 男受被做哭激烈娇喘gv视频 | 日韩av色| 亚瑟av | 成人看片| 羞羞漫画在线播放 | 樱花电影最新免费观看国语版 | 午夜激情导航 | 日本女人一区二区三区 | 天堂av在线免费 | 欧美一区二区不卡视频 | 中国一级特黄视频 | 天天摸日日摸 | 国产乱人| 日韩精品电影网 | 少妇喷白浆 | 色婷婷婷婷色 | 黄色片播放器 | 免费污片软件 | 精品一区二区中文字幕 | 国久久 | 91丝袜国产在线播放 | 国产成人激情视频 | 男人午夜剧场 | 国产精品久久久久久久av福利 | 国产1区2区3区中文字幕 | 欧美国产第一页 | 欧美一级一区 | 国产精品成人3p一区二区三区 | 五月婷婷色丁香 | 亚洲精品理论片 | 日本韩国毛片 | 日韩视频在线观看一区二区 | 91吃瓜今日吃瓜入口 | 亚洲欧美精选 | 91久久精品国产91久久 | 亚欧洲精品在线视频免费观看 | 中文一区二区在线播放 | 三上悠亚激情av一区二区三区 | 伊人狼人综合 | 国产激情二区 | 亚洲精品男人天堂 | wwwwww在线观看 | 国产精品视频不卡 | 精精国产xxxx视频在线 | 四虎在线视频 | 黄色香蕉软件 | 打开每日更新在线观看 | 美女视频国产 | 色妞色视频一区二区三区四区 | 人妻激情偷乱视频一区二区三区 | 伊人久久久久久久久久久久久 | 男女激情大尺度做爰视频 | 黄视频在线观看免费 | 亚洲aaa视频 | 久草三级 | 伊人超碰在线 | 欧美激情视频一区二区三区不卡 | 久草免费在线观看视频 | 麻豆视频在线观看免费网站 | 欧美日韩亚洲高清 | 天天色综合图片 | 久久精品三级视频 | 国产视频二区三区 | 欧美激情久久久久 | 成人久色 | 黄色国产一区二区 | 日韩福利一区二区 | 亚洲干综合 | 伊人久久大香 | 三级视频在线 | 日本人妻熟妇久久久久久 | 欧美影院一区二区三区 | jizzjizz欧美69巨大 | 国产精品久久久久久久久久免费 | 精品一区二区三区精华液 | 国产99久久九九精品无码免费 | av天天看 | 懂色av一区二区三区蜜臀 | av片国产| 精品人妻在线视频 | 亚洲第九十九页 | 国产欧美久久久 |