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