Docker 的優點
838
2025-04-07
某天,我無意逛到某個小網站,如果我不懂代碼,想要網站上全部的妹子,我該怎么做?……幸好有她,她好我也好,她就是 RPA – Robotic Process Automation,中文意思是機器人流程自動化,換句話說就是利用機器人技術來實現業務流程的自動化處理。
環境安裝
首先打開另一個小網站 – https://www.hwtelcloud.com/products/rpa,下載【設計器】,并進行使用激活;下載【執行器】,讓程序自己動;此外還需下載瀏覽器驅動和安裝瀏覽器插件。關于軟件的下載安裝等此處就不進行講解,相信您能搞定!
本大獅發表文章時所用到的軟件版本及環境如下:
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
將近1000頁的幫助文檔在 WeAutomate Studio 安裝目錄下:document/RPA_Robot_Development_Guide_zh_cn.pdf
此外還有更多優質的課程盡在華為云學院: 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 中我們需要用到哪些控件呢?首先我們要從網頁獲取圖片,打開網頁控件是第一個用到的;其次我們要獲取網頁的高度并進行滾動、獲取頁面圖片元素及src屬性,我們可以通過執行 js 代碼控件來幫我們完成;此外,涉及的一些流程控制我們必須依賴分支、循環等控件;最后下載圖片則通過下載文件控件實現。
實施過程
RPA 的實施一般遵循下面的生命周期:
RPA 評估
首先 RPA 評估,針對此次我的這個“大膽”的想法,我的整個業務流程完成能夠用自動化來實現,當然投資回報率(ROI)對我來說,完全只需投入少量的時間就能獲取到海量的數據,理論上是非常劃算的。本次實踐不對 RPA 工具本身做任何評價,本著新手小白的學習態度,一款好用的強大的稱手的 RPA 工具請按照自身的場景去選取,如同技術選型,對開發工具做一定的調研、體驗才能更好的選擇合適的工具。
RPA 設計
接著 RPA 設計,我們先梳理一下完整的業務流程,細粒度精確到每一個點,比如網頁數據怎么獲取、圖片怎么下載等等,勢必會涉及到一些邏輯,比如分支邏輯、循環邏輯;除此之外,我們需要明確每個操作的輸入和輸出;在實際工作中,我們可能還需形成具體的文檔。
RPA 開發
簡單梳理完流程之后,開始開發我的第一個 RPA 程序。盡管整個流程梳理起來非常簡單,但實際開發的時候,由于對工具、編程語言基礎等不熟練,我踩了一個又一個的坑,最終走出了結合 JS 代碼以及 NodeJS 爬蟲的思路來開發這個圖片爬取的 RPA 程序。
全局變量定義
由于本大獅功力不夠,暫時沒能實現打開網頁之后動態獲取跳轉的鏈接,因此我直接使用的輸入關鍵字搜索之后的 url 作為全局變量 url 的值,拼接 keyword 來實現結果頁面圖片的獲取。
打開網頁
寫得比較隨意,中文在瀏覽器地址中可以做 url 編碼處理,這里可以引入 python 模塊哦!
獲取瀏覽器窗口高度
建議此操作前先調用控件讓瀏覽器窗口最大化,然后通過 JS 代碼獲取瀏覽器窗口高度并賦值給 height,方便后面的滾動操作。執行 JS 代碼控件是有返回值的,在代碼中通過 return 可以返回指定內容。
return document.body.offsetHeight;
循環操作
此處模擬了 JS 的定時器方法,使用While來進行滾動操作的循環。假如我想獲取 10k 張圖片,第一次加載的結果可能才幾十張,如果是人工操作的話,我需要不斷滾動瀏覽器以加載獲得更多的數據。那機器人是怎么自動化操作呢?我們給它設置一個延時操作,然后調用 JS 代碼滾動瀏覽器,同時更新height:
let height=@{height}*2; window.scrollTo(0,height); return height;
獲取圖片鏈接
同樣的通過調用執行 JS 代碼控件來獲取圖片的鏈接和數量,為圖片下載和退出循環做準備。
let arrs = document.querySelectorAll('.main_img'); let urls = [] for (let img of arrs){urls .push(img.src)} return urls;
退出循環
比較預期的圖片數量和實際的圖片數量,如果圖片夠了,我們就退出循環,進行下一步操作。
創建文件夾
這里的步驟非必須,根據實際情況取舍,我這里是簡單的嘗試并熟悉 RPA 工具;不過邏輯還不夠嚴謹,可以優化的點實在是太多。
遍歷圖片鏈接并下載
“沒有什么問題是一個 for 循環不能解決的,如果有,那就兩個”,此處能夠直接進行循環是因為之前 JS 代碼返回的值已經是 list 了,因此將 url 遍歷出來調用下載文件控件就能直接下載。
至此,一個簡單的圖片爬取 RPA 程序已經開發完畢。
RPA 測試
如果是大型的項目,必然會經過單元測試、集成測試等全面的測試歷練之后才會發布。而對于此次的 RPA 圖片爬取小程序,我只做了簡單的調試,理論上調試依舊屬于開發階段,嚴格來說需要模擬各種場景、各種系統和上下文進行正確性測試等,測試完成后才可以上線。
作為偽測試,我輸入華為美女 100 張,結果程序給了我 130 張,XDM 你們說測試通過嗎?
RPA 優化
畢竟是 Hello World 級別的程序,出自 HW 攻城獅之手,因此有很多地方需要完善,比如邏輯的嚴謹性、沒有考慮邊界、下載的文件名雜亂等。畢竟真實的項目如果是這么個水平,估計…… RPA 的優化可以從最優設計、從性能、從實際業務需求等方面去實施。當然,屏幕前的您一定有自己的優化思路,期待您與我分享!
小結
回到標題,咦,為什么是上篇,難道還有下篇?敬請期待吧!那么上篇講了哪些知識點呢?首先是 RPA 環境搭建及入門,然后是 RPA 程序開發的套路,接著是網頁元素處理、文件下載、如何調用 python 模塊、如何調用 JS 等,最后是簡單測試及優化建議。感謝閱讀,希望能幫到您!
最后,附送幾個G的學習資料:
https://ilearningx.huawei.com/portal/courses?q=ANTROBOT
如果您對本文有任何意見,歡迎與我聯系,公眾號:胡琦, Wechat: Hugi66
附件: WebTest.zip 70.47KB 下載次數:2次
機器人 網絡智能體
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。