目錄
- 1.自動(dòng)移動(dòng)鼠標(biāo),以便Skype / Lynk顯示你在工作中處于活動(dòng)狀態(tài)
- 2.使用Selenium自動(dòng)化網(wǎng)站登錄過(guò)程
- 3.自動(dòng)文件備份
- 4.自動(dòng)將YouTube視頻發(fā)布到Reddit主題
- 結(jié)論
自動(dòng)化有助于解放人們的工作。不過(guò)說(shuō)實(shí)話,即使對(duì)簡(jiǎn)單的任務(wù)自動(dòng)化也需要時(shí)間和大量的依賴關(guān)系管理,而這可能非常復(fù)雜。
Python對(duì)于幾乎所有東西的交互都很友好。從發(fā)送HTTP請(qǐng)求、與API交互、到加載和管理數(shù)據(jù)庫(kù)都是如此。因此Python是自動(dòng)化的絕佳選擇。
以下是用Python實(shí)現(xiàn)自動(dòng)化的四項(xiàng)簡(jiǎn)單操作,可以幫助完成各種工作流程和項(xiàng)目。
1.自動(dòng)移動(dòng)鼠標(biāo),以便Skype / Lynk顯示你在工作中處于活動(dòng)狀態(tài)
想象一下,在過(guò)去十分鐘內(nèi),你一直在瀏覽最喜愛(ài)的社交媒體應(yīng)用中的新聞。突然,Lynk軟件中的活動(dòng)符號(hào)變黃,這表明你沒(méi)有工作,也沒(méi)有參加會(huì)議。
這時(shí)你愛(ài)管閑事的老板走了過(guò)來(lái),輕拍你的肩膀。
你很驚訝地抬頭,看見(jiàn)老板正瞪著你,因?yàn)樗袀€(gè)每時(shí)每刻都管理員工的壞習(xí)慣。
“嘿,我希望你放松一下,但告訴我那個(gè)模塊是怎么出現(xiàn)的?!彼麊?wèn)道。你咬緊牙關(guān),提供了某種禮貌的答案。
“棒極了,好吧,我只是想確保你能集中注意力。副總裁Janice真的希望我們能夠在截止日期前完成任務(wù)?!?/p>
交談結(jié)束。
要是Lynk軟件的活動(dòng)符號(hào)沒(méi)有變黃該有多好?
其實(shí)你可以解決這個(gè)問(wèn)題。在谷歌搜索片刻之后,可找到腳本來(lái)移動(dòng)鼠標(biāo)并開(kāi)始編寫(xiě)代碼,通過(guò)每隔幾分鐘運(yùn)行一次程序以確保鼠標(biāo)移動(dòng)。
在使用Skype或Lynk時(shí),鼠標(biāo)和鍵盤(pán)的這些移動(dòng)可以使你看起來(lái)像是在工作中保持活躍狀態(tài)。
自動(dòng)化工作使用Python的PyAutoGUI模塊。要安裝PyAutoGUI模塊,請(qǐng)運(yùn)行以下命令:
pip install pyautogui
Python使用屏幕的坐標(biāo)系控制并跟蹤鼠標(biāo)。例如,如果屏幕是1920x1080的分辨率,屏幕的坐標(biāo)系統(tǒng)將如下所示:
PyAutoGUI模塊提供以下功能:
•size():size()函數(shù)可讓你了解屏幕分辨率。
import pyautogui
print(pyautogui.size())
運(yùn)行此文件(保存為.py擴(kuò)展名),Python代碼使用size()函數(shù)輸出屏幕分辨率的x、y格式:
•moveTo():PyAutoGUI模塊中的moveTo()函數(shù)可移動(dòng)鼠標(biāo)。下面的代碼運(yùn)用了函數(shù),該函數(shù)采用x和y的坐標(biāo)以及可選的duration(持續(xù)時(shí)間)參數(shù),使用指定的duration參數(shù)將鼠標(biāo)指針從當(dāng)前位置移動(dòng)到x和y的坐標(biāo)。
import pyautogui
print(pyautogui.size())pyautogui.moveTo(150,100, duration = 2)
運(yùn)行此Python腳本會(huì)發(fā)現(xiàn)鼠標(biāo)指針神奇地從其當(dāng)前位置移動(dòng)到坐標(biāo)(150,100),只用2秒鐘就能完成該過(guò)程。
除了其中一些基礎(chǔ)知識(shí)外,還可以使用click和typewrite等函數(shù),實(shí)現(xiàn)單擊和輸入字符串的自動(dòng)化。
這些都可以用來(lái)確保你的老板不會(huì)很快抓住你在工作中開(kāi)小差。
2.使用Selenium自動(dòng)化網(wǎng)站登錄過(guò)程
許多網(wǎng)站都不愿看到用戶使用爬蟲(chóng)和程序登錄其網(wǎng)站。但是,這仍然是一種很值得一學(xué)的技能。
Selenium是一個(gè)有用的庫(kù),可使用多種語(yǔ)言、幫助自動(dòng)化UI QA、甚至可以通過(guò)登錄來(lái)抓取網(wǎng)站。
雖然學(xué)習(xí)Selenium可能需要一些時(shí)間,但不必學(xué)些很難的知識(shí)點(diǎn),只需構(gòu)建一個(gè)可以登錄你喜歡的網(wǎng)站的工具。
開(kāi)始使用前,必須安裝Chrome驅(qū)動(dòng)程序和適用于Python的Selenium庫(kù)。使用以下命令添加Selenium庫(kù):
首先,需要從Python的Selenium庫(kù)中導(dǎo)入一些選定的模塊。添加以下命令:
From selenium import webdriverdriver = webdriver.Chrome()
現(xiàn)在,為了實(shí)現(xiàn)自動(dòng)登錄,從一個(gè)簡(jiǎn)單的任務(wù)開(kāi)始,比如填寫(xiě)網(wǎng)站的登錄表單。
任務(wù)包括:
- 導(dǎo)航到網(wǎng)站
- 查找登錄字段(通常是用戶名和密碼)。
- 填寫(xiě)登錄詳情信息。
- 提交登錄詳情信息,自動(dòng)完成屏幕登錄。
建議:可以定義“方法”(用于頻繁登錄)從而在其他測(cè)試中啟用重用。 代碼行可參考:
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()
注意,你需要獲取要與之交互的元素。這可以說(shuō)是創(chuàng)建登錄到站點(diǎn)的Web抓取器或自動(dòng)登錄網(wǎng)站的腳本的難點(diǎn)之一。
有幾種方法可以檢測(cè)Web應(yīng)用程序的元素,以查找登錄字段。
查找元素的常用方法包括ID(如上例所示)、CSS選擇器、名稱(chēng)和XPaths。
可以在Selenium的官方文檔中找到用于定位登錄過(guò)程涉及的元素的不同方法。有些網(wǎng)站會(huì)使用更多動(dòng)態(tài)內(nèi)容(比如好幾個(gè)JavaScript!)。
總的來(lái)說(shuō),看著Selenium自動(dòng)點(diǎn)擊按鈕并登錄到你喜愛(ài)的網(wǎng)站這一自動(dòng)化流程十分吸引人。不需要你的參與就能完成移動(dòng)與操作。 幾乎就像在變魔術(shù)!
3.自動(dòng)文件備份
如果要執(zhí)行常規(guī)備份,那么創(chuàng)建自動(dòng)備份文件非常有用。
你可能熟悉ZIP文件(擴(kuò)展名為.zip的文件)。ZIP文件可以包含多個(gè)具有壓縮內(nèi)容的文件。而且,由于ZIP文件還可以容納許多文件夾和子文件夾,因此通過(guò)將文件打包成一個(gè)文件,可成為備份文件的便捷方式。
可以使用zipfile模塊中的Python函數(shù)自動(dòng)創(chuàng)建單個(gè)ZIP文件(稱(chēng)為存檔文件)。還可以使用Python打開(kāi)(或提取)ZIP文件。該腳本如下所示:
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.自動(dòng)將YouTube視頻發(fā)布到Reddit主題
我們最近看到和想到的另一個(gè)一勞永逸的想法是自動(dòng)執(zhí)行可能經(jīng)常執(zhí)行的任務(wù):使用腳本將多個(gè)視頻發(fā)布到Reddit上。
在Reddit帖子中發(fā)布YouTube視頻也可以實(shí)現(xiàn)自動(dòng)化。使用PRAW(一種允許抓取數(shù)據(jù)的Python包裝器)可以為Reddit體驗(yàn)提供更多功能。
開(kāi)始使用前,請(qǐng)使用pip安裝PRAW。
下面的腳本會(huì)自動(dòng)將YouTube視頻發(fā)布到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")
結(jié)論
自動(dòng)化任務(wù)可以帶來(lái)很多樂(lè)趣,特別是看著程序自動(dòng)登錄喜歡的站點(diǎn),或?qū)?shù)百個(gè)文件加載到數(shù)據(jù)庫(kù)中。
而且,還有很多優(yōu)秀的庫(kù)可以幫助輕松地實(shí)現(xiàn)任務(wù)自動(dòng)化。只要庫(kù)是可維護(hù)的,Excel報(bào)告、電子郵件和其他任務(wù)就可以通過(guò)幾行代碼簡(jiǎn)化。
以上就是python 自動(dòng)化偷懶的四個(gè)實(shí)用操作的詳細(xì)內(nèi)容,更多關(guān)于python 自動(dòng)化實(shí)用操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- Pytest+request+Allure實(shí)現(xiàn)接口自動(dòng)化框架
- python開(kāi)發(fā)的自動(dòng)化運(yùn)維工具ansible詳解
- python實(shí)現(xiàn)自動(dòng)化腳本編寫(xiě)
- Python實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化eNSP
- 教你怎么用Python處理excel實(shí)現(xiàn)自動(dòng)化辦公
- python+requests+pytest接口自動(dòng)化的實(shí)現(xiàn)示例
- 我用Python給班主任寫(xiě)了一個(gè)自動(dòng)閱卷腳本(附源碼)