財(cái)務(wù)大數(shù)據(jù)分析 課件 7.應(yīng)用程序自動(dòng)化_第1頁
財(cái)務(wù)大數(shù)據(jù)分析 課件 7.應(yīng)用程序自動(dòng)化_第2頁
財(cái)務(wù)大數(shù)據(jù)分析 課件 7.應(yīng)用程序自動(dòng)化_第3頁
財(cái)務(wù)大數(shù)據(jù)分析 課件 7.應(yīng)用程序自動(dòng)化_第4頁
財(cái)務(wù)大數(shù)據(jù)分析 課件 7.應(yīng)用程序自動(dòng)化_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章應(yīng)用程序自動(dòng)化——自動(dòng)定時(shí)下載網(wǎng)銀流水在財(cái)務(wù)數(shù)據(jù)采集過程中,有時(shí)候需要登錄應(yīng)用程序下載相關(guān)文件,例如需要每天定時(shí)登錄網(wǎng)銀系統(tǒng),下載網(wǎng)銀流水,這時(shí)候就可以通過RPA技術(shù)來實(shí)現(xiàn),RPA技術(shù),是以軟件機(jī)器人及人工智能為基礎(chǔ)的業(yè)務(wù)過程自動(dòng)化科技。RPA技術(shù)可以替代軟件的人工操作,大幅提高重復(fù)性工作的效率。在Python中,通過PyAutoGUI庫可以方便地控制鼠標(biāo)和鍵盤,以及可以自動(dòng)與其他應(yīng)用程序交互,從而實(shí)現(xiàn)RPA相關(guān)功能。使用者可以用這個(gè)庫來記錄鍵盤和鼠標(biāo)操作,從而使得計(jì)算機(jī)能像人一樣去使用那些應(yīng)用程序,使人們從煩瑣的重復(fù)性工作中抽離出來。本章主要講解PyAutoGUI庫的基礎(chǔ)及進(jìn)階使用技巧,并通過所講內(nèi)容實(shí)現(xiàn)自動(dòng)定時(shí)下載網(wǎng)銀流水的案例實(shí)戰(zhàn),幫助讀者更好地理解如何通過RPA技術(shù)實(shí)現(xiàn)財(cái)務(wù)應(yīng)用程序自動(dòng)化。?!蹦夸汸yAutoGUI庫基礎(chǔ)知識(shí)PyAutoGUI庫進(jìn)階知識(shí)綜合案例實(shí)戰(zhàn)——自動(dòng)定時(shí)下載網(wǎng)銀流水7.1PyAutoGUI庫基礎(chǔ)知識(shí)這一節(jié)將講解PyAutoGUI庫的基礎(chǔ)知識(shí),包括PyAutoGUI庫的安裝、自動(dòng)控制鼠標(biāo)、自動(dòng)控制鍵盤等相關(guān)操作,方便讀者快速入門PyAutoGUI庫7.1.1PyAutoGUI庫的安裝首先對PyAutoGUI庫的安裝方法做簡要介紹。(1)安裝方法1:使用pip安裝法進(jìn)行安裝建議使用pip安裝法安裝PyAutoGUI庫:通過Win+R快捷鍵調(diào)出運(yùn)行框,輸入cmd后單擊“確定”按鈕,在彈出的窗口中輸入如下命令,按Enter鍵即可進(jìn)行安裝。安裝過程中,會(huì)同時(shí)安裝很多PyAutoGUI的依賴庫,出現(xiàn)圖7-1所示字樣即表示安裝成功。圖7-1

7.1.1PyAutoGUI庫的安裝(2)安裝方法2:下載后安裝如果采用pip安裝法因?yàn)榫W(wǎng)絡(luò)問題一直安裝不了,也可以手動(dòng)下載并安裝。進(jìn)入官網(wǎng),單擊Downloadfiles,下載右側(cè)的PyAutoGUI-0.9.XX.tar.gz文件(單擊即可下載,其中××是版本號(hào)),如圖7-2所示。圖7-2下載完成后,在下載的tar.gz文件所在文件夾的文件路徑框里輸入cmd后按Enter鍵進(jìn)入文件夾終端(也可以在文件夾中按住Shift鍵并右擊,在彈出的快捷菜單中執(zhí)行“在此處打開Powershell窗口”命令,進(jìn)入命令行窗口),進(jìn)入命令行窗口后通過執(zhí)行“pipinstall文件名”命令進(jìn)行安裝。7.1.1PyAutoGUI庫的安裝(3)檢測安裝是否成功進(jìn)入Python,執(zhí)行如下命令。若未出現(xiàn)錯(cuò)誤提示,就說明已經(jīng)成功安裝PyAutoGUI。7.1.2自動(dòng)控制鼠標(biāo)我們?nèi)粘I钪薪?jīng)常使用的鼠標(biāo)動(dòng)作,都可以用PyAutoGUI庫中的函數(shù)來模擬,這一小節(jié)將介紹鼠標(biāo)指針坐標(biāo)的定義及一些鼠標(biāo)控制函數(shù)。(1)屏幕分辨率和鼠標(biāo)指針坐標(biāo)在介紹如何使用PyAutoGUI庫控制鼠標(biāo)動(dòng)作之前,先來了解鼠標(biāo)指針坐標(biāo)的定義,如圖7-3所示。圖7-3利用PyAutoGUI庫能夠獲取屏幕大小信息,之后以屏幕的左上角為坐標(biāo)原點(diǎn),從坐標(biāo)原點(diǎn)向右為x軸,從0開始遞增;從坐標(biāo)原點(diǎn)向下為y軸,從0開始遞增。左上角的像素坐標(biāo)為(0,0)。如果屏幕分辨率為1920像素×1080像素,右下角的像素坐標(biāo)將為(1919,1079)(因?yàn)樽鴺?biāo)從0開始,而不是1)。7.1.2自動(dòng)控制鼠標(biāo)可以用函數(shù)獲取屏幕分辨率以及鼠標(biāo)指針的當(dāng)前坐標(biāo)。也可以通過一些外部軟件獲取鼠標(biāo)指針坐標(biāo),如微信的截圖功能:登錄微信后按Alt

+A快捷鍵,鼠標(biāo)指針右側(cè)就會(huì)顯示當(dāng)前坐標(biāo),如圖7-4所示。此外,向大家推薦一個(gè)截圖軟件——Snipaste,用這個(gè)軟件可以方便地獲取屏幕坐標(biāo)及顏色信息。圖7-4

7.1.2自動(dòng)控制鼠標(biāo)(2)控制鼠標(biāo)指針移動(dòng)此種方式無論鼠標(biāo)指針的當(dāng)前位置在哪兒,都能控制鼠標(biāo)指針移動(dòng)到(x,y)=(1392,47)的位置上。此種方式要先獲取鼠標(biāo)指針的當(dāng)前位置,然后在此位置的基礎(chǔ)上向右移動(dòng)20個(gè)像素,向下移動(dòng)30個(gè)像素。參數(shù)duration規(guī)定鼠標(biāo)指針移動(dòng)到目標(biāo)位置所需要的時(shí)間,我們會(huì)看到鼠標(biāo)指針在規(guī)定時(shí)間內(nèi)逐漸移動(dòng)到目標(biāo)位置,就像手動(dòng)移動(dòng)鼠標(biāo)指針一樣。7.1.2自動(dòng)控制鼠標(biāo)7.1.2自動(dòng)控制鼠標(biāo)7.1.3自動(dòng)控制鍵盤類似地,也可以用PyAutoGUI庫來模擬鍵盤輸入。(1)控制鍵盤按鍵上述代碼輸入的參數(shù)表示要控制鍵盤按哪個(gè)鍵,單獨(dú)輸入字母,如'a',就相當(dāng)于按鍵盤上的A鍵,一些常用的快捷鍵如表7-2所示。7.1.3自動(dòng)控制鍵盤7.1.3自動(dòng)控制鍵盤7.1.3自動(dòng)控制鍵盤(4)解決不能輸入中文的問題按照正常的輸入邏輯,輸入中文需要使用輸入法輸入拼音,再選中需要的正確字符,這樣的操作顯然太過煩瑣??梢允褂靡恍煜蛳到y(tǒng)剪貼板中寫入中文,再調(diào)用熱鍵進(jìn)行粘貼。操作剪貼板的常見庫有win32clipboard和pyperclip兩種,都很方便。唯一的區(qū)別是pyperclip庫在打包為EXE文件時(shí)文件體積會(huì)更大。pyperclip庫的應(yīng)用。7.1.3自動(dòng)控制鍵盤值得注意的是,用win32clipboard庫將中文寫入剪貼板,需要先進(jìn)行轉(zhuǎn)碼,否則會(huì)有亂碼出現(xiàn)。7.2PyAutoGUI庫進(jìn)階知識(shí)本節(jié)主要講解PyAutoGUI庫進(jìn)階知識(shí),包括消息框的設(shè)置、圖像識(shí)別、截圖及像素顏色獲取等相關(guān)知識(shí),并在最后通過一個(gè)簡單應(yīng)用示例鞏固相關(guān)知識(shí)。7.2.1消息框的設(shè)置PyAutoGUI庫利用PyMsgBox中的消息框函數(shù),可以顯示JavaScript樣式的消息框。(1)alert()消息框顯示一個(gè)帶有文本提示和單個(gè)確認(rèn)按鈕的簡單消息框,如圖7-5所示。(2)confirm()消息框顯示帶有多個(gè)按鈕的消息框,如圖7-6所示??梢宰远x按鈕的數(shù)量和對應(yīng)文本。圖7-5圖7-6

7.2.1消息框的設(shè)置(3)prompt()消息框顯示一個(gè)帶有確定和取消按鈕的輸入框,如圖7-7所示,單擊確認(rèn)(OK)按鈕后,會(huì)返回輸入的文本,若沒有輸入,則返回空值,單擊取消(Cancel)按鈕,則返回None??梢酝ㄟ^default參數(shù)設(shè)置輸入框中的初始內(nèi)容。(4)password()消息框顯示一個(gè)帶有確定和取消按鈕的密碼輸入框,如圖7-8所示,可以將密碼設(shè)置為非明文顯示,輸入的字符會(huì)顯示為mask參數(shù)設(shè)置的字符,該參數(shù)只有第一個(gè)字符有效。單擊確認(rèn)(OK)按鈕后,會(huì)返回輸入的文本,若沒有輸入,則返回空值,單擊取消(Cancel)按鈕,則返回None。圖7-7

圖7-8可以通過default參數(shù)設(shè)置輸入框中的初始內(nèi)容。7.2.2圖像識(shí)別我們總能夠通過設(shè)定坐標(biāo)來決定程序的工作流程,但當(dāng)應(yīng)用程序圖標(biāo)被移動(dòng),網(wǎng)頁結(jié)構(gòu)有所改變時(shí),需要重新設(shè)置坐標(biāo)來使程序正確工作。PyAutoGUI庫還具有圖像捕捉與識(shí)別的功能,用戶可根據(jù)自己的需要,預(yù)先保存需要單擊位置的截圖,對于那些位置經(jīng)常發(fā)生改變而圖標(biāo)區(qū)域變化不大的單擊點(diǎn)來說,這樣顯然更加靈活。(1)圖像定位可以用locateOnScreen()方法來進(jìn)行圖像的匹配。這里以Windows圖標(biāo)為例,來看一看該方法的工作結(jié)果。首先,截取屏幕左下方Windows圖標(biāo),如圖7-9所示。圖7-97.2.2圖像識(shí)別截取的圖標(biāo)如圖7-10所示。開始進(jìn)行圖像匹配。輸出值如下。該方法是從屏幕的左上角開始找圖像,從左至右遍歷,然后從上到下遍歷,一旦找到就停止。返回的值描述了該區(qū)域所在位置及大小,該值是一個(gè)

Box類實(shí)例,可以看成一個(gè)4整數(shù)元組,即(左、上、寬、高)??梢杂脭?shù)組的形式或left、top、width、height屬性來訪問單獨(dú)的值。7.2.2圖像識(shí)別此外,可以用PyAutoGUI庫的center()方法來返回該區(qū)域的中心點(diǎn)坐標(biāo),通常來講,進(jìn)行圖像匹配的目的就是單擊其中心點(diǎn)。該方法的返回值是一個(gè)Point類實(shí)例,可以用數(shù)組形式或(x、y)屬性來訪問單獨(dú)的值。7.2.2圖像識(shí)別(2)直接定位中心點(diǎn)locateCenterOnScreen()方法相當(dāng)于結(jié)合了locateOnScreen()和center()方法的功能,可以直接返回一個(gè)中心點(diǎn)的Point類實(shí)例。7.2.2圖像識(shí)別(3)加速圖像定位①限定區(qū)域。本書所用的定位方法,是從屏幕的左上角開始找圖像,從左至右遍歷,然后從上到下遍歷,一旦找到就停止??梢韵胂蟮氖?,這樣做的成本是高昂的,可能需要一秒或更長的時(shí)間來進(jìn)行定位。加速這一過程的良好方法是使用region參數(shù)為圖像定位限定一個(gè)大致區(qū)域,區(qū)域越小,匹配就越快。4個(gè)值分別對應(yīng)x、y、w、h,分別指左上角的x軸、y軸坐標(biāo),以及寬度(width)和高度(height)。7.2.2圖像識(shí)別下面通過實(shí)驗(yàn)來對比匹配速度。7.2.2圖像識(shí)別可以看到,加速效果十分明顯。②灰度匹配。還可以通過將參數(shù)grayscale設(shè)置為True,來為locate()函數(shù)加速,根據(jù)官方文檔,加速比例在30%左右。這是犧牲準(zhǔn)確率換取速度的做法,會(huì)降低圖像和屏幕截圖的顏色飽和度加快定位速度,但可能會(huì)導(dǎo)致誤匹配。7.2.2圖像識(shí)別(4)降低查找精度PyAutoGUI庫對圖像匹配的要求較高,有時(shí)可能因?yàn)閳D像的放大、縮小造成了像素上的差異,導(dǎo)致匹配失敗??梢酝ㄟ^設(shè)置confidence參數(shù)來降低查找精度,從而更方便地使用圖像定位功能。要使用confidence參數(shù),首先要安裝OpenCV,打開命令行窗口,用pip命令安裝即可。成功安裝后,即可根據(jù)實(shí)際情況,將confidence設(shè)為小于1的數(shù)。7.2.3截圖及像素顏色獲?。?)像素顏色獲取可以用pixel(x,y)函數(shù)來獲取(x,y)點(diǎn)的像素顏色,返回對象是一個(gè)三元組,分別對應(yīng)RGB值的(red,green,blue)。還可以用

pixelMatchesColor(x,y,(red,green,blue))驗(yàn)證某一像素是否為某顏色,顏色仍然用RGB值來表示,返回值為True或False。7.2.3截圖及像素顏色獲?。?)截圖功能可以用screenshot()函數(shù)來獲取當(dāng)前屏幕截圖,返回對象是一個(gè)Image類實(shí)例。運(yùn)行這段代碼,輸出如圖7-11所示。圖7-11可以將該截圖保存到自定義路徑中。7.2.3截圖及像素顏色獲取由于使用的是相對路徑,運(yùn)行后,會(huì)在代碼文件同路徑下生成截圖文件,這里也可以換成絕對路徑,結(jié)果如圖7-12所示。圖7-127.2.3截圖及像素顏色獲取打開該截圖文件,就可以看到運(yùn)行時(shí)桌面的截圖,如圖7-13所示。圖7-137.2.3截圖及像素顏色獲取還可以用region=(左,上,寬,高)來自定義截圖范圍。打開新的截圖文件,如圖7-14所示。圖7-147.2.3截圖及像素顏色獲取可以用getpixel()來查看截圖某一像素的RGB值。7.2.3截圖及像素顏色獲取7.2.4

簡單應(yīng)用示例用前文講過的基本方法實(shí)現(xiàn)模擬登錄百度查詢python的功能。先初始化PyAutoGUI庫的一系列參數(shù),并啟動(dòng)自動(dòng)防故障功能。獲取瀏覽器網(wǎng)址輸入框的坐標(biāo),如圖7-15所示。圖7-157.2.3截圖及像素顏色獲取輸入網(wǎng)址,代碼如下(注意其中的坐標(biāo)位置需要根據(jù)顯示器大小調(diào)節(jié))。獲取到百度搜索界面輸入框的坐標(biāo),如圖7-16所示。圖7-167.2.3截圖及像素顏色獲取輸入搜索內(nèi)容,開始搜索。正確出現(xiàn)搜索結(jié)果,如圖7-17所示。圖7-17到這里,就完成了對于PyAutoGUI庫基礎(chǔ)和進(jìn)階知識(shí)的講解,7.3節(jié)將通過綜合案例實(shí)戰(zhàn)來演示如何通過這個(gè)庫實(shí)現(xiàn)自動(dòng)定時(shí)下載網(wǎng)銀流水。7.3綜合案例實(shí)戰(zhàn)——自動(dòng)定時(shí)下載網(wǎng)銀流水在做財(cái)務(wù)相關(guān)的工作時(shí),時(shí)常需要批量、定時(shí)地進(jìn)行網(wǎng)銀流水的下載。各銀行下載網(wǎng)銀流水的方式有所不同,且許多銀行都使用了自主開發(fā)的程序,沒有提供相關(guān)接口。在這一案例實(shí)戰(zhàn)中,我們選取一個(gè)簡單的網(wǎng)銀模擬程序,基于PyAutoGUI庫完成對網(wǎng)銀流水的定時(shí)下載。7.3.1模擬程序介紹因?yàn)閷?shí)際的網(wǎng)銀程序登錄要求比較嚴(yán)格,例如通常需要一些類似網(wǎng)銀盾的輔助設(shè)備,不利于學(xué)習(xí)和練習(xí),所以編者使用PyQT5庫,寫了一個(gè)簡單的網(wǎng)銀模擬程序main.exe,方便模擬網(wǎng)銀流水下載的全流程,在本章源代碼文件夾的main文件夾中,雙擊其中的main.exe應(yīng)用程序,可以進(jìn)入網(wǎng)銀模擬程序,如圖7-18所示。該程序功能較為簡單,首先,用戶打開程序,輸入賬號(hào)、密碼進(jìn)行登錄,登錄后,出現(xiàn)網(wǎng)銀流水界面,展示了當(dāng)前網(wǎng)銀流水信息,可以通過單擊“導(dǎo)出”按鈕進(jìn)行導(dǎo)出,并可以選擇要保存到的路徑。導(dǎo)出成功后,程序會(huì)給出提示。7.3.2思路分析下載一次網(wǎng)銀流水,需要依次做到:雙擊程序—輸入賬號(hào)、密碼—單擊登錄—單擊導(dǎo)出—在彈出的窗口中找到地址輸入欄—粘貼想要保存到的路徑—關(guān)閉程序。本例采取坐標(biāo)定位來完成這一流程,先手動(dòng)完成一次導(dǎo)出,用截圖或之前提到的PyAutoGUI庫自帶的輸出坐標(biāo)方法記錄各個(gè)點(diǎn)的坐標(biāo),再加入定時(shí),就可以完成定時(shí)自動(dòng)下載網(wǎng)銀流水的任務(wù)。7.3.3具體代碼實(shí)現(xiàn)首先,根據(jù)程序所在坐標(biāo),雙擊以打開程序(注意本節(jié)涉及的坐標(biāo)位置需要根據(jù)顯示器大小調(diào)節(jié))。7.3.3具體代碼實(shí)現(xiàn)接下來粘貼賬號(hào)及密碼,并單擊登錄,仍然用之前的操作剪貼板的方式來粘貼。賬號(hào)、密碼也可以仿照之前的案例實(shí)戰(zhàn)從Excel文件中讀取??梢栽诿坎胶髸和?,防止程序執(zhí)行過快導(dǎo)致一些步驟被跳過。7.3.3具體代碼實(shí)現(xiàn)正確輸入賬號(hào)、密碼,如圖7-19所示。登錄成功后,進(jìn)入下一界面,如圖7-20所示。

圖7-19

圖7-20

7.3.3具體代碼實(shí)現(xiàn)單擊“導(dǎo)出”按鈕,根據(jù)記錄好的坐標(biāo),在地址欄中粘貼想要保存網(wǎng)銀流水的路徑,并選定文件夾。7.3.3具體代碼實(shí)現(xiàn)成功保存后,先關(guān)閉提示框,最后關(guān)閉程序。選擇保存文件夾,如圖7-21所示。圖7-217.3.3具體代碼實(shí)現(xiàn)導(dǎo)出成功的提示如圖7-22所示。圖7-227.3.3具體代碼實(shí)現(xiàn)最后,將其封裝為函數(shù)。7.3.3具體代碼實(shí)現(xiàn)7.3.3具體代碼實(shí)現(xiàn)如果想使程序定時(shí)執(zhí)行,可以使用schedule庫,schedule庫的相關(guān)知識(shí)點(diǎn)可以參考7.3.4小節(jié)補(bǔ)充知識(shí)點(diǎn):通過schedule庫實(shí)現(xiàn)定時(shí)任務(wù)。最終代碼匯總?cè)缦拢?.3.3具體代碼實(shí)現(xiàn)7.3.4補(bǔ)充知識(shí)點(diǎn):通過schedule庫實(shí)現(xiàn)定時(shí)任務(wù)有時(shí)需要在原有段落中新增文字,這時(shí)需要對之前添加段落的代碼進(jìn)行修改,代碼如下:這和單獨(dú)寫file.add_paragraph('我喜歡你')的結(jié)果是一樣的,不過它的意義不太一樣,之前講過file.add_paragraph('我喜歡你')生成的是一個(gè)段落,那么“我喜歡你”4個(gè)字雖短,卻也是個(gè)段落,如果要在這個(gè)段落里再添加內(nèi)容,比如在“你”字后面再加“的眼”,通過add_paragraph()方法只能新建一個(gè)段落,就沒有辦法在“你”字后面增加內(nèi)容了。比如執(zhí)行如下代碼:7.3.4補(bǔ)充知識(shí)點(diǎn):通過schedule庫實(shí)現(xiàn)定時(shí)任務(wù)想要準(zhǔn)確地實(shí)現(xiàn)每天的定時(shí)任務(wù),可以使用Python的schedule庫,schedule的中文翻譯是時(shí)刻表。首先需要安裝schedule庫,其安裝辦法推薦使用pip安裝法:按Win+R快捷鍵調(diào)出運(yùn)行框,輸入cmd后單擊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論