
作者:閑歡
來源:Python 技術(shù)
在上篇文章《Python自動(dòng)操作 GUI 神器——PyAutoGUI》中,我跟大家講解了一下 pyautogui 的一些基礎(chǔ)知識(shí)和操作,大家反饋很好,給了我好多贊,在此先跟大家說聲三克油!
在得到大家正反饋的同時(shí),我受到了很大鼓舞,感覺如果只是介紹一下基礎(chǔ)操作,有點(diǎn)不過癮,所以今天晚上加班回來,雖然很不想打開電腦,但是還是忍著疲憊給大家奉獻(xiàn)一個(gè)小實(shí)例。
為此,我跑去洗手間用涼水洗了一把臉,頓時(shí)清醒多了,下面進(jìn)入正題。
作為一個(gè) GUI 操作的神器,我們看到了它的操作都很簡(jiǎn)單,非常通俗易懂,基本上看到函數(shù)就能知道它的功效。
下面我來給大家演示一個(gè)小栗子,看了這個(gè)栗子后你就會(huì)明白它的神器由來了。
好了,不給大家繞彎子了,今天的小栗子就是批量給知乎的文章點(diǎn)贊。
我們先來看看知乎的個(gè)人主頁(yè):
這里,我將下面的 tab 標(biāo)簽切換到文章這里,顯示的就是作者的文章列表。
我們先來想一下,如果我要給這位作者的文章點(diǎn)贊,我需要怎么做?
首先,我需要找到點(diǎn)贊的圖標(biāo);然后,我點(diǎn)擊點(diǎn)贊圖標(biāo),完成一次點(diǎn)贊;當(dāng)我將視野內(nèi)的文章點(diǎn)贊完成后,我拖動(dòng)頁(yè)面往下滑,繼續(xù)上面的步驟。
看到這里,你是不是覺得這么說有點(diǎn)二?
但是我們寫程序就必須這樣,把每一個(gè)步驟都明確,然后根據(jù)步驟去寫邏輯,不然當(dāng)你動(dòng)手寫邏輯的時(shí)候,你可能會(huì)遺漏一些細(xì)節(jié),導(dǎo)致程序無法達(dá)到預(yù)期效果,或者出現(xiàn)bug。
有了上面的步驟,我們就可以著手開發(fā)代碼了。
首先,我要讓程序識(shí)別點(diǎn)贊的按鈕。上篇文章中我介紹過一個(gè)小栗子,就是從桌面上找到瀏覽器的圖標(biāo),我們需要將瀏覽器的圖標(biāo)截圖保存為一張圖片,然后傳給程序,讓程序用這張圖片到屏幕中去尋找。
這里也是一樣,我先將知乎的點(diǎn)贊按鈕截了圖:
按照上面的步驟,我首先需要識(shí)別當(dāng)前桌面上的點(diǎn)贊按鈕,只需要一行代碼:
allLocation = pyautogui.locateAllOnScreen('agree.png')
這樣就可以找到桌面上所有的點(diǎn)贊按鈕了。
找到點(diǎn)贊按鈕之后,下一步就是點(diǎn)贊了:
def like(): time.sleep(1) if pyautogui.locateOnScreen('agree.png'):
left, top, width, height = pyautogui.locateOnScreen('agree.png')
center = pyautogui.center((left, top, width, height))
pyautogui.click(center)
print('點(diǎn)贊成功!')
這里,我首先休息了1秒鐘,防止程序運(yùn)行過快,把頁(yè)面搞崩潰或者觸發(fā)平臺(tái)的安全策略。
接著我找到點(diǎn)贊的按鈕,計(jì)算按鈕的中心點(diǎn),然后進(jìn)行點(diǎn)擊。
這樣,我們就順利地完成了一次點(diǎn)贊操作。
然后,我再來寫一個(gè)判斷,如果當(dāng)前桌面上的點(diǎn)贊按鈕都點(diǎn)過了,就滾動(dòng)屏幕,到下一屏繼續(xù)點(diǎn)贊:
while True:
allLocation = pyautogui.locateAllOnScreen('agree.png') if len(list(allLocation)) > 0:
like() # 調(diào)用點(diǎn)贊函數(shù) else: try:
pyautogui.scroll(-500) print('我滾了!')
except: print('完蛋啦')
整個(gè)代碼運(yùn)行起來是這樣的:
注意,在程序運(yùn)行過程中,一定要將打開知乎頁(yè)面的瀏覽器切換到桌面最上層,以保證你當(dāng)前操作的是這個(gè)頁(yè)面。
這里沒有寫終止條件,所以程序會(huì)一直運(yùn)行下去,直到你手動(dòng)終止。
整個(gè)栗子就是這樣的,簡(jiǎn)約而不簡(jiǎn)單,雖然只有幾行代碼,但是替我完成了一次自動(dòng)化操作。可能這里舉知乎的例子還不太恰當(dāng),因?yàn)橹跏怯蟹猪?yè)的,如果是瀑布流的頁(yè)面,那真的可以一直點(diǎn)贊下去。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10