開篇言:py的庫真的是多,封裝相關功能的庫真的是各具神通,里面的輪子很多,前幾天一直回去看基礎的語法函式這些,以及c語言資料結構這些,扎實自己的基礎,
學習是一件很麻煩但是很有意思的事情(我指的是碼代碼),今天為大家介紹這個自動化庫,提高趣味性,當然python的自動化操作還是有好多,后面會為大家繼續推出,
pyautogui庫的趣味操作
- 一:初步認識pyautogui
- 二:相關方法的介紹
- 1:控制滑鼠
- 先了解一下像素(我們以筆記本電腦像素舉例)
- 實作對滑鼠的控制
- 2:控制輸入以及鍵盤按鍵
- 3:截圖以及匹配(圖片識別)
- 三:自動化點贊(處理了存在的例外)、
一:初步認識pyautogui
pyautogui是什么?
拆開來分析,畢竟還是英文單詞,py+auto+gui,那就是python的自動化圖形界面的一個庫,
給大家推薦一個可以查閱py檔案的網站,可以查看最新的庫的相關操作以及版本,點擊訪問PyPI

可以試著去閱讀,雖然都是英文,但是也是可以通過谷歌翻譯翻譯為中文的(如果你真的看不懂的話),個人感覺學會閱讀英文文獻也是程式員的一種素養,
廢話有點多,我們來介紹這個庫究竟是什么?大家可以在這里看到,

實作一個控制圖形界面的庫,完成一些自動化操作,當然也是需要配合你得程式,或者高級一點我們可以說是配合你的演算法,
可以實作滑鼠控制,鍵盤輸入,截圖匹配的相關操作,目前本人學到用到的也就這些,
二:相關方法的介紹
1:控制滑鼠
先了解一下像素(我們以筆記本電腦像素舉例)
呃呃,剛剛去百度了一下,說的比較官方,但是比較準確,
像素是指由影像的小方格組成的,這些小方塊都有一個明確的位置和被分配的色彩數值,小方格顏色和位置就決定該影像所呈現出來的樣子,
按照我們的簡單的理解,像素就是電腦螢屏上的那些很小很小的方格,每個方格都有位置坐標,以及色彩rgb,像素方格組合起來顯示就可以呈現出來我們可以看到的影像,就好像你的表皮細胞一樣,你是肉眼看不到,但是它是組成部分,不知道這樣比喻是否恰當,

我們也會聽到有關解析度,那么像素于之是什么樣的關系呢?
像素(px)=英寸(in)x解析度(ppi)
我們需要知道一下這個概念,這是電腦顯示幕上的解析度,分別代表了長和寬上的像素點,值比較大的化,影像會更加清晰,美觀,

我們可以通過代碼來獲取螢屏的解析度
import pyautogui 匯入所需要的庫
print(pyautogui.size())#查看電腦橫縱像素
分別列印出橫縱如下,這是這個庫可以用到的一個方法,具體了解到有什么用呢?繼續往后看滑鼠,

實作對滑鼠的控制
1:列印滑鼠的當前位置
print(pyautogui.position())#查看滑鼠所在的位置
我們可以做一個回圈監測滑鼠所在的位置
import pyautogui
import time
def search_positon() :
time.sleep(1)
x1,y1= pyautogui.position()
print("您當前位置坐標為:","x:"+str(x1)+'',"y:"+str(y1))
if __name__ == "__main__" :
while True :
search_positon()
pass

我們剛剛說到像素,通過一行代碼獲取到顯示屏的橫縱像素,這個對于我們對電腦的像素坐標有了一個基本的認識,可以知道的是,x_max=1919,y_max=1079,這就是程式給出的最大坐標,因為下標從0開始,我的電腦螢屏左上角的坐標為(0,0),而電腦的的橫縱分別為1920,1080,所以就理解了,那么就可以在電腦的左上角建立坐標原點,然后可以開始你的平面構思,
我們可以用到一個方法,將該方法的回傳直接列印出,如果在,就回傳True,如果不在就回傳False
print(pyautogui.onScreen(200,202))#查看位置點是否位于螢屏上

2:控制滑鼠移動
對的,還可以控制滑鼠移動,我們來看具體的用到的方法,
pyautogui.moveTo(100,200,3)#這是控制滑鼠移動,3代表了時間,

還有一種移動的方法
pyautogui.moveRel(200,300,4)
看起來兩者區別不大,但是實際上還是有區別的,那就是moveTo()是移動到絕對位置,就是相對于你的螢屏坐標原點,而moveRel()是相對當前位置移動,
我們來看一種按鍵移動,就是指定按住滑鼠那個鍵移動
pyautogui.drag(500,500,button='left',duration=4)
#button引數指定了按鍵,duration指定了完成任務的時間,當然這個移動也是相對當前位置移動

pyautogui.dragTo(500,500,button='left',duration=6)#這邊的500是移動到具體的位置

滑鼠點擊
pyautogui.click(0,0,button='right')#滑鼠點擊指定的位置
pyautogui.click(2,2,button='left',clicks=2,interval=0.1,duration=2)#interval代表完成間隔時間,clicks指定了點擊次數,

滑鼠滾動
import pyautogui
#為了效果明顯,我們使用一個回圈進行觀察
pyautogui.FAILSAFE = False
while True :
pyautogui.scroll(-200)

2:控制輸入以及鍵盤按鍵
在滑鼠游標的位置寫入內容
pyautogui.write("Hello",interval=0.5)#間隔為1秒,字符之間

還有其它的按鍵方法,這邊不做演示,展示一下方法
# pyautogui.press('enter')#按鍵盤上的鍵
# # pyautogui.press(['x','y','z'])#以串列的形式傳入按鍵
# pyautogui.keyDown()#模擬按鍵
# pyautogui.keyUp()#按鍵釋放
資訊輸入
a = pyautogui.alert(Text = "i love you",title='666') #彈出提示框
print(a)#輸出一下回傳內容

a1 = pyautogui.confirm("你喜歡誰",button = ['張三','王五','李四'])
print(a1)

資訊輸入還有密碼的輸入的方法
# a2 = pyautogui.password("請輸入密碼")
# print(a2)
3:截圖以及匹配(圖片識別)
這邊我們介紹方法,具體看后面的一個自動化程式
#pyautogui.screenshot()#截圖
#pyautogui.screenshot("picture.png")保存
#另一種保存
#a = pyautogui.screenhot()
#a.save("picture.png")#這邊可以自己加路徑的
#pyautogui.screenshot(region=(0,0, 0, 0))#這邊指定區域截圖
#匹配圖片的函式
# pyautogui.locateOnScreen('picture.jpg')
# pyautogui.locateAllOnScreen('picture.jpg')#匹配多處圖片
具體完成一個小小的自動化點贊程式,網上也有好多,但是個人對例外進行了處理,所以點贊會比較絲滑,往下看,舉個栗子,
三:自動化點贊(處理了存在的例外)、
思路:?
如何實作自動化點贊?我的思路是這樣的,預先保存一個贊的圖示,這個截圖是我自己用windows自帶截圖功能截下來的,
如果你要用程式截圖的化,會很麻煩,因為我需要的贊表就這么大,如下,hhh,

然后呢,我通過這個圖片作為模板,然后再頁面上尋找,一旦找到,我就回傳其橫縱坐標,然后我就指定點擊這個位置,如果沒有找到,我就命令滑鼠下滑,繼續找,如此回圈,當然你可以看到,上面那個白色的贊標,這就決定了,我會給沒有贊的人點贊,或者我沒有點過贊的人,
我尋找的目標是csdn動態,來看代碼先
import pyautogui
import time
pyautogui.FAILSAFE =False
def dianzan():
time.sleep(0.5) # 等待 0.5 秒
try:
buttonx,buttony = pyautogui.locateCenterOnScreen(image = 'D:/python/pydoc/pystudy/665.png') # 尋找 點贊圖片;
pyautogui.click(buttonx,buttony)
# 點擊
print('點贊成功!')
except TypeError :
print("目前接收不了回傳的引數")
while True:
if pyautogui.locateOnScreen(image = 'D:/python/pydoc/pystudy/665.png'):
dianzan() # 呼叫點贊函式
else:
pyautogui.scroll(-200) # 本頁沒有圖片后,滾動滑鼠;
print('沒有找到目標,螢屏下滾~')
想說的是這個和你預先作為模板的圖片有關,效果也是不一樣的,還有自己如何選擇和滾動,游標預先放置的位置,會有一部分沒點上,自動化點贊了許多,

釋疑
我們來解釋一部分內容,就是這邊我們為什么要捕獲例外
try:
buttonx,buttony = pyautogui.locateCenterOnScreen(image = 'D:/python/pydoc/pystudy/665.png') # 尋找 點贊圖片;
pyautogui.click(buttonx,buttony)
# 點擊
print('點贊成功!')
except TypeError :
print("目前接收不了回傳的引數")
buttonx,buttony會接識訓傳的坐標,橫縱,前提是如果找到了,但是沒有找到會回傳none,那么你要用兩個引數接收的化就肯定不行了,所以我們考慮到這點,讓程式在遇到這種情況的時候拋出例外,然后繼續尋找,不然的化,程式會因為沒找到圖片回傳值接收出錯而中斷,所以這個是一個很巧妙的點,
腳注:對個人用這些方法的話,其實沒有太多的技術含量,python這些要求我們會這些方法,調包這些,所以個人一向將python作為輔助工具,當然你要是人工智能這些高級的話就會用到數學這些演算法相關的,python呢,是一門很值得去學習的語言,效率高,資料分析強,集成大量的功能,大家給python吹也是有道理的,人工智能沒資料可視化這些,資料分析等等,不得不說,這門語言很優秀,
歡迎大家留言,寫文章太累了,還有后面如果有新的內容的話,還會給本文加入更多自動話程式,
點擊訪問主頁-jgdabc
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382157.html
標籤:其他
