自動化有助於解放人們的工作。不過說實話,即使對簡單的任務自動化也需要時間和大量的依賴關係管理,而這可能非常複雜。
Python對於幾乎所有東西的交互都很友好。從發送HTTP請求、與API交互、到加載和管理數據庫都是如此。因此Python是自動化的絕佳選擇。
以下是用Python實現自動化的四項簡單操作,可以幫助完成各種工作流程和項目。
圖片來源:DXL(Unsplash網站)
1.自動移動鼠標,以便Skype / Lynk顯示你在工作中處於活動狀態
想象一下,在過去十分鐘內,你一直在瀏覽最喜愛的社交媒體應用中的新聞。突然,Lynk軟件中的活動符號變黃,這表明你沒有工作,也沒有參加會議。
這時你愛管閒事的老闆走了過來,輕拍你的肩膀。
你很驚訝地抬頭,看見老闆正瞪著你,因為他有個每時每刻都管理員工的壞習慣。
“嘿,我希望你放鬆一下,但告訴我那個模塊是怎麼出現的。”他問道。你咬緊牙關,提供了某種禮貌的答案。
“棒極了,好吧,我只是想確保你能集中注意力。副總裁Janice真的希望我們能夠在截止日期前完成任務。”
交談結束。
要是Lynk軟件的活動符號沒有變黃該有多好?
其實你可以解決這個問題。在谷歌搜索片刻之後,可找到腳本來移動鼠標並開始編寫代碼,通過每隔幾分鐘運行一次程序以確保鼠標移動。
在使用Skype或Lynk時,鼠標和鍵盤的這些移動可以使你看起來像是在工作中保持活躍狀態。
自動化工作使用Python的PyAutoGUI模塊。要安裝PyAutoGUI模塊,請運行以下命令:
pip install pyautogui
Python使用屏幕的座標系控制並跟蹤鼠標。例如,如果屏幕是1920x1080的分辨率,屏幕的座標系統將如下所示:
PyAutoGUI模塊提供以下功能:
•size():size()函數可讓你瞭解屏幕分辨率。
import pyautogui
print(pyautogui.size())
運行此文件(保存為.py擴展名),Python代碼使用size()函數輸出屏幕分辨率的x、y格式:
•moveTo():PyAutoGUI模塊中的moveTo()函數可移動鼠標。下面的代碼運用了函數,該函數採用x和y的座標以及可選的duration(持續時間)參數,使用指定的duration參數將鼠標指針從當前位置移動到x和y的座標。
import pyautogui
print(pyautogui.size())pyautogui.moveTo(150,100, duration = 2)
運行此Python腳本會發現鼠標指針神奇地從其當前位置移動到座標(150,100),只用2秒鐘就能完成該過程。
除了其中一些基礎知識外,還可以使用click和typewrite等函數,實現單擊和輸入字符串的自動化。
這些都可以用來確保你的老闆不會很快抓住你在工作中開小差。
2.使用Selenium自動化網站登錄過程
許多網站都不願看到用戶使用爬蟲和程序登錄其網站。但是,這仍然是一種很值得一學的技能。
Selenium是一個有用的庫,可使用多種語言、幫助自動化UI QA、甚至可以通過登錄來抓取網站。
雖然學習Selenium可能需要一些時間,但不必學些很難的知識點,只需構建一個可以登錄你喜歡的網站的工具。
開始使用前,必須安裝Chrome驅動程序和適用於Python的Selenium庫。使用以下命令添加Selenium庫:
Pip install Selenium
首先,需要從Python的Selenium庫中導入一些選定的模塊。添加以下命令:
From selenium import webdriverdriver = webdriver.Chrome()
現在,為了實現自動登錄,從一個簡單的任務開始,比如填寫網站的登錄表單。
任務包括:
•導航到網站。
•查找登錄字段(通常是用戶名和密碼)。
•填寫登錄詳情信息。
•提交登錄詳情信息,自動完成屏幕登錄。
建議:可以定義“方法”(用於頻繁登錄)從而在其他測試中啟用重用。
代碼行可參考:
From selenium import webdriver
driver = webdriver.Chrome()
def login(url,username,password,submit_button):
driver.get(url)
driver.find_element_by_id(username).send_keys("username")
driver.find_element_by_id(password).send_keys("password")
driver.find_element_by_id(password).(submit_button).click()
注意,你需要獲取要與之交互的元素。這可以說是創建登錄到站點的Web抓取器或自動登錄網站的腳本的難點之一。
有幾種方法可以檢測Web應用程序的元素,以查找登錄字段。
查找元素的常用方法包括ID(如上例所示)、CSS選擇器、名稱和XPaths。
可以在Selenium的官方文檔中找到用於定位登錄過程涉及的元素的不同方法。有些網站會使用更多動態內容(比如好幾個JavaScript!)。
總的來說,看著Selenium自動點擊按鈕並登錄到你喜愛的網站這一自動化流程十分吸引人。不需要你的參與就能完成移動與操作。
幾乎就像在變魔術!
3.自動文件備份
如果要執行常規備份,那麼創建自動備份文件非常有用。
你可能熟悉ZIP文件(擴展名為.zip的文件)。ZIP文件可以包含多個具有壓縮內容的文件。而且,由於ZIP文件還可以容納許多文件夾和子文件夾,因此通過將文件打包成一個文件,可成為備份文件的便捷方式。
可以使用zipfile模塊中的Python函數自動創建單個ZIP文件(稱為存檔文件)。還可以使用Python打開(或提取)ZIP文件。該腳本如下所示:
(該腳本來自《Python編程快速上手》該書)。
import zipfile, os
def backup(folder)
folder = os.path.abspath(folder)
offset=1
while True:
zip_name=os.path.basename(folder)+'_'+str(offset)+'.zip'
if not os.path.exists(zip_name):
break
offset+=1
print("Successfully created file " %s" %(zip_name))
backupzip=zipfile.ZipFile(zip_name,'w')
for foldername,subfolders,filenames in os.walk(folder):
backupzip.write(foldername)
backupzip.close()
print("done")
4.自動將YouTube視頻發佈到Reddit主題
我們最近看到和想到的另一個一勞永逸的想法是自動執行可能經常執行的任務:使用腳本將多個視頻發佈到Reddit上。
在Reddit帖子中發佈YouTube視頻也可以實現自動化。使用PRAW(一種允許抓取數據的Python包裝器)可以為Reddit體驗提供更多功能。
開始使用前,請使用pip安裝PRAW。
下面的腳本會自動將YouTube視頻發佈到Reddit主題。
import praw
video_url=str(input("Your video url:"))
post_msg = str(input("Your post message"))
reddit=praw.Reddit(client_id="***************",
client_secret="************",
user_agent="**********",
username="************",
password="***********")
subreddit_list =["Python","PytonProjects","learningprogramming"]
for i in subreddit_list:
subreddit=reddit.subreddit(i)
print("Posting video to" + i)
subreddit.submit(post_msg, url=video_url)
print("Done")
結論
自動化任務可以帶來很多樂趣,特別是看著程序自動登錄喜歡的站點,或將數百個文件加載到數據庫中。
而且,還有很多優秀的庫可以幫助輕鬆地實現任務自動化。只要庫是可維護的,Excel報告、電子郵件和其他任務就可以通過幾行代碼簡化。
我們一起分享AI學習與發展的乾貨
閱讀更多 讀芯術 的文章