RPA 實戰(zhàn):讓小姐姐填滿你的硬盤(上)
某天,我無意逛到某個小網站,如果我不懂代碼,想要網站上全部的妹子,我該怎么做?……幸好有她,她好我也好,她就是 RPA -- Robotic Process Automation,中文意思是機器人流程自動化,換句話說就是利用機器人技術來實現業(yè)務流程的自動化處理。
環(huán)境安裝
首先打開另一個小網站 -- https://www.hwtelcloud.com/products/rpa,下載【設計器】,并進行使用激活;下載【執(zhí)行器】,讓程序自己動;此外還需下載瀏覽器驅動和安裝瀏覽器插件。關于軟件的下載安裝等此處就不進行講解,相信您能搞定!
RPA 實戰(zhàn)圖片爬取本大獅發(fā)表文章時所用到的軟件版本及環(huán)境如下:
- WeAutomate Studio(2.14.0)
- WeAutomate Assistant(2.14.0)
- VM: python 3.8.5 64-bit
- Windows Feature Experience Pack 421.16300.0.3
- Google Chrome 91.0.4472.124 64-bit
RPA 實戰(zhàn)圖片爬取將近1000頁的幫助文檔在 WeAutomate Studio 安裝目錄下:document/RPA_Robot_Development_Guide_zh_cn.pdf
RPA 實戰(zhàn)圖片爬取此外還有更多優(yōu)質的課程盡在華為云學院:https://ilearningx.huawei.com/portal/courses?q=ANTROBOT
“技術”解析
說到圖片,我最先想到的是某度圖片,之前通過使用 NodeJS 爬蟲爬取過該網站搜索出來的圖片,大概的流程如下:
- 輸入關鍵字,
//*[@id="kw"]這里的 Input 標簽就是我們關鍵字輸入的位置。
獲取圖片列表,當我們輸入關鍵字并搜索的結果就呈現為頁面的
//*[@id="imgid"]/div/ul/li[1]/div/a/img,也就是 classname 為main_img的圖片元素
滾動窗口,當我們模擬鼠標滾動時,頁面會加載更多的圖片。

圖片下載,我們獲取到每個圖片元素的
src屬性,就是我們最終的圖片下載地址。
RPA 實戰(zhàn)圖片爬取那么整個流程下來,在 RPA 中我們需要用到哪些控件呢?首先我們要從網頁獲取圖片,打開網頁控件是第一個用到的;其次我們要獲取網頁的高度并進行滾動、獲取頁面圖片元素及src屬性,我們可以通過執(zhí)行 js 代碼控件來幫我們完成;此外,涉及的一些流程控制我們必須依賴分支、循環(huán)等控件;最后下載圖片則通過下載文件控件實現。
RPA 實戰(zhàn)圖片爬取實施過程
RPA 的實施一般遵循下面的生命周期:
RPA 實戰(zhàn)圖片爬取RPA 評估
首先 RPA 評估,針對此次我的這個“大膽”的想法,我的整個業(yè)務流程完成能夠用自動化來實現,當然投資回報率(ROI)對我來說,完全只需投入少量的時間就能獲取到海量的數據,理論上是非常劃算的。本次實踐不對 RPA 工具本身做任何評價,本著新手小白的學習態(tài)度,一款好用的強大的稱手的 RPA 工具請按照自身的場景去選取,如同技術選型,對開發(fā)工具做一定的調研、體驗才能更好的選擇合適的工具。
RPA 設計
接著 RPA 設計,我們先梳理一下完整的業(yè)務流程,細粒度精確到每一個點,比如網頁數據怎么獲取、圖片怎么下載等等,勢必會涉及到一些邏輯,比如分支邏輯、循環(huán)邏輯;除此之外,我們需要明確每個操作的輸入和輸出;在實際工作中,我們可能還需形成具體的文檔。
流程圖RPA 開發(fā)
簡單梳理完流程之后,開始開發(fā)我的第一個 RPA 程序。盡管整個流程梳理起來非常簡單,但實際開發(fā)的時候,由于對工具、編程語言基礎等不熟練,我踩了一個又一個的坑,最終走出了結合 JS 代碼以及 NodeJS 爬蟲的思路來開發(fā)這個圖片爬取的 RPA 程序。
- 1. 全局變量定義
由于本大獅功力不夠,暫時沒能實現打開網頁之后動態(tài)獲取跳轉的鏈接,因此我直接使用的輸入關鍵字搜索之后的 url 作為全局變量 url 的值,拼接 keyword 來實現結果頁面圖片的獲取。
| 名稱 | 類型 | 值 | 描述 |
|---|---|---|---|
| url | String | (根據實際情況填寫) | baseurl,用于拼接 keyword 訪問結果頁 |
| keyword | String | (根據實際情況填寫) | 關鍵字,比如"性感美女"、“靚仔” |
| height | String | 0 | 初始的窗口高度,用于緩存過程數據 |
| num | Number | (根據實際情況填寫) | 圖片數量,暫未做精確處理,作為退出循環(huán)的條件 |
image- 2. 打開網頁
寫得比較隨意,中文在瀏覽器地址中可以做 url 編碼處理,這里可以引入 python 模塊哦!
image- 3. 獲取瀏覽器窗口高度
建議此操作前先調用控件讓瀏覽器窗口最大化,然后通過 JS 代碼獲取瀏覽器窗口高度并賦值給 height,方便后面的滾動操作。執(zhí)行 JS 代碼控件是有返回值的,在代碼中通過 return 可以返回指定內容。
return?document.body.offsetHeight;
image- 4. 循環(huán)操作
此處模擬了 JS 的定時器方法,使用While來進行滾動操作的循環(huán)。假如我想獲取 10k 張圖片,第一次加載的結果可能才幾十張,如果是人工操作的話,我需要不斷滾動瀏覽器以加載獲得更多的數據。那機器人是怎么自動化操作呢?我們給它設置一個延時操作,然后調用 JS 代碼滾動瀏覽器,同時更新height:
let??height=@{height}*2;
window.scrollTo(0,height);
return?height;
image- 5. 獲取圖片鏈接
同樣的通過調用執(zhí)行 JS 代碼控件來獲取圖片的鏈接和數量,為圖片下載和退出循環(huán)做準備。
let?arrs?=?document.querySelectorAll('.main_img');
let?urls?=?[]
for?(let?img?of?arrs){urls?.push(img.src)}
return?urls;
image- 6. 退出循環(huán)
比較預期的圖片數量和實際的圖片數量,如果圖片夠了,我們就退出循環(huán),進行下一步操作。
- 7. 創(chuàng)建文件夾
這里的步驟非必須,根據實際情況取舍,我這里是簡單的嘗試并熟悉 RPA 工具;不過邏輯還不夠嚴謹,可以優(yōu)化的點實在是太多。
- 8. 遍歷圖片鏈接并下載
“沒有什么問題是一個 for 循環(huán)不能解決的,如果有,那就兩個”,此處能夠直接進行循環(huán)是因為之前 JS 代碼返回的值已經是 list 了,因此將 url 遍歷出來調用下載文件控件就能直接下載。
至此,一個簡單的圖片爬取 RPA 程序已經開發(fā)完畢。
RPA 測試
如果是大型的項目,必然會經過單元測試、集成測試等全面的測試歷練之后才會發(fā)布。而對于此次的 RPA 圖片爬取小程序,我只做了簡單的調試,理論上調試依舊屬于開發(fā)階段,嚴格來說需要模擬各種場景、各種系統(tǒng)和上下文進行正確性測試等,測試完成后才可以上線。作為偽測試,我輸入華為美女 100 張,結果程序給了我 130 張,XDM 你們說測試通過嗎?
RPA 優(yōu)化
畢竟是 Hello World 級別的程序,出自 HW 攻城獅之手,因此有很多地方需要完善,比如邏輯的嚴謹性、沒有考慮邊界、下載的文件名雜亂等。畢竟真實的項目如果是這么個水平,估計…… RPA 的優(yōu)化可以從最優(yōu)設計、從性能、從實際業(yè)務需求等方面去實施。當然,屏幕前的您一定有自己的優(yōu)化思路,期待您與我分享!
小結
回到標題,咦,為什么是上篇,難道還有下篇?敬請期待吧!那么上篇講了哪些知識點呢?首先是 RPA 環(huán)境搭建及入門,然后是 RPA 程序開發(fā)的套路,接著是網頁元素處理、文件下載、如何調用 python 模塊、如何調用 JS 等,最后是簡單測試及優(yōu)化建議。感謝閱讀,希望能幫到您!最后,附送幾個G的學習資料:
https://ilearningx.huawei.com/portal/courses?q=ANTROBOT
如果您對本文有任何意見,歡迎與我聯系,公眾號:胡琦, Wechat:Hugi66
掃描二維碼獲取
更多精彩

胡琦

點擊左下角查看更多

