1. RPA 實戰(zhàn):讓小姐姐填滿你的硬盤(上)

        共 3455字,需瀏覽 7分鐘

         ·

        2021-07-16 04:27

        某天,我無意逛到某個小網站,如果我不懂代碼,想要網站上全部的妹子,我該怎么做?……幸好有她,她好我也好,她就是 RPA -- Robotic Process Automation,中文意思是機器人流程自動化,換句話說就是利用機器人技術來實現業(yè)務流程的自動化處理。

        環(huán)境安裝

        首先打開另一個小網站 -- https://www.hwtelcloud.com/products/rpa,下載【設計器】,并進行使用激活;下載【執(zhí)行器】,讓程序自己動;此外還需下載瀏覽器驅動和安裝瀏覽器插件。關于軟件的下載安裝等此處就不進行講解,相信您能搞定!

        b1c677c19a260fc696c5903ceae051e4.webpRPA 實戰(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
        ec554f9190c92d52b0f92552b55482b3.webpRPA 實戰(zhàn)圖片爬取

        將近1000頁的幫助文檔在 WeAutomate Studio 安裝目錄下:document/RPA_Robot_Development_Guide_zh_cn.pdf

        c35eb5bdfdaddc461d9a81bb41c8595c.webpRPA 實戰(zhàn)圖片爬取

        此外還有更多優(yōu)質的課程盡在華為云學院:https://ilearningx.huawei.com/portal/courses?q=ANTROBOT

        “技術”解析

        說到圖片,我最先想到的是某度圖片,之前通過使用 NodeJS 爬蟲爬取過該網站搜索出來的圖片,大概的流程如下:

        1. 輸入關鍵字,//*[@id="kw"]這里的 Input 標簽就是我們關鍵字輸入的位置。


        RPA 實戰(zhàn)圖片爬取
        1. 獲取圖片列表,當我們輸入關鍵字并搜索的結果就呈現為頁面的//*[@id="imgid"]/div/ul/li[1]/div/a/img,也就是 classname 為 main_img 的圖片元素


          3245de8e06673886392e2db49b7f1293.webp

        2. 滾動窗口,當我們模擬鼠標滾動時,頁面會加載更多的圖片。


          fbaf6f0d0194eeea617e2fef4028e4de.webp

        3. 圖片下載,我們獲取到每個圖片元素的 src 屬性,就是我們最終的圖片下載地址。

        3e6572a05d2797e59057af7e7cc8772c.webpRPA 實戰(zhàn)圖片爬取

        那么整個流程下來,在 RPA 中我們需要用到哪些控件呢?首先我們要從網頁獲取圖片,打開網頁控件是第一個用到的;其次我們要獲取網頁的高度并進行滾動、獲取頁面圖片元素及src屬性,我們可以通過執(zhí)行 js 代碼控件來幫我們完成;此外,涉及的一些流程控制我們必須依賴分支、循環(huán)等控件;最后下載圖片則通過下載文件控件實現。

        1a08f36f410a5e1ae04ee8841efc84d5.webpRPA 實戰(zhàn)圖片爬取

        實施過程

        RPA 的實施一般遵循下面的生命周期:

        9f29f1cb4107d6d43d91cb8fc32af897.webpRPA 實戰(zhàn)圖片爬取

        RPA 評估

        首先 RPA 評估,針對此次我的這個“大膽”的想法,我的整個業(yè)務流程完成能夠用自動化來實現,當然投資回報率(ROI)對我來說,完全只需投入少量的時間就能獲取到海量的數據,理論上是非常劃算的。本次實踐不對 RPA 工具本身做任何評價,本著新手小白的學習態(tài)度,一款好用的強大的稱手的 RPA 工具請按照自身的場景去選取,如同技術選型,對開發(fā)工具做一定的調研、體驗才能更好的選擇合適的工具。

        RPA 設計

        接著 RPA 設計,我們先梳理一下完整的業(yè)務流程,細粒度精確到每一個點,比如網頁數據怎么獲取、圖片怎么下載等等,勢必會涉及到一些邏輯,比如分支邏輯、循環(huán)邏輯;除此之外,我們需要明確每個操作的輸入和輸出;在實際工作中,我們可能還需形成具體的文檔。

        6c5c4302b1712603b8d049d3d305021c.webp流程圖

        RPA 開發(fā)

        簡單梳理完流程之后,開始開發(fā)我的第一個 RPA 程序。盡管整個流程梳理起來非常簡單,但實際開發(fā)的時候,由于對工具、編程語言基礎等不熟練,我踩了一個又一個的坑,最終走出了結合 JS 代碼以及 NodeJS 爬蟲的思路來開發(fā)這個圖片爬取的 RPA 程序。

        • 1. 全局變量定義

        由于本大獅功力不夠,暫時沒能實現打開網頁之后動態(tài)獲取跳轉的鏈接,因此我直接使用的輸入關鍵字搜索之后的 url 作為全局變量 url 的值,拼接 keyword 來實現結果頁面圖片的獲取。

        名稱類型描述
        urlString(根據實際情況填寫)baseurl,用于拼接 keyword 訪問結果頁
        keywordString(根據實際情況填寫)關鍵字,比如"性感美女"、“靚仔”
        heightString0初始的窗口高度,用于緩存過程數據
        numNumber(根據實際情況填寫)圖片數量,暫未做精確處理,作為退出循環(huán)的條件
        39e14f5e9343544c6ecdad0af1037ba0.webpimage
        • 2. 打開網頁

        寫得比較隨意,中文在瀏覽器地址中可以做 url 編碼處理,這里可以引入 python 模塊哦!

        eda1b13349a67f9ed9f9494046930f85.webpimage
        • 3. 獲取瀏覽器窗口高度

        建議此操作前先調用控件讓瀏覽器窗口最大化,然后通過 JS 代碼獲取瀏覽器窗口高度并賦值給 height,方便后面的滾動操作。執(zhí)行 JS 代碼控件是有返回值的,在代碼中通過 return 可以返回指定內容。

        return?document.body.offsetHeight;
        939eea8f68e2dfe446af1e9d6391d4e4.webpimage
        • 4. 循環(huán)操作

        此處模擬了 JS 的定時器方法,使用While來進行滾動操作的循環(huán)。假如我想獲取 10k 張圖片,第一次加載的結果可能才幾十張,如果是人工操作的話,我需要不斷滾動瀏覽器以加載獲得更多的數據。那機器人是怎么自動化操作呢?我們給它設置一個延時操作,然后調用 JS 代碼滾動瀏覽器,同時更新height

        let??height=@{height}*2;
        window.scrollTo(0,height);
        return?height;
        346a3c0536cda0a0122841e7e31c426a.webpimage
        • 5. 獲取圖片鏈接

        同樣的通過調用執(zhí)行 JS 代碼控件來獲取圖片的鏈接和數量,為圖片下載和退出循環(huán)做準備。

        let?arrs?=?document.querySelectorAll('.main_img');
        let?urls?=?[]
        for?(let?img?of?arrs){urls?.push(img.src)}
        return?urls;
        8b43d88f0ab9c8d3096504319e671365.webpimage
        • 6. 退出循環(huán)

        比較預期的圖片數量和實際的圖片數量,如果圖片夠了,我們就退出循環(huán),進行下一步操作。f66a258e3afb53e12139a20e2754ab91.webp

        • 7. 創(chuàng)建文件夾

        這里的步驟非必須,根據實際情況取舍,我這里是簡單的嘗試并熟悉 RPA 工具;不過邏輯還不夠嚴謹,可以優(yōu)化的點實在是太多。3807466fd5fd9a5c219b4119012c3bdc.webp

        • 8. 遍歷圖片鏈接并下載

        “沒有什么問題是一個 for 循環(huán)不能解決的,如果有,那就兩個”,此處能夠直接進行循環(huán)是因為之前 JS 代碼返回的值已經是 list 了,因此將 url 遍歷出來調用下載文件控件就能直接下載。c09c37cee16091a5e5084bc06fadf108.webp

        至此,一個簡單的圖片爬取 RPA 程序已經開發(fā)完畢。

        RPA 測試

        如果是大型的項目,必然會經過單元測試、集成測試等全面的測試歷練之后才會發(fā)布。而對于此次的 RPA 圖片爬取小程序,我只做了簡單的調試,理論上調試依舊屬于開發(fā)階段,嚴格來說需要模擬各種場景、各種系統(tǒng)和上下文進行正確性測試等,測試完成后才可以上線。作為偽測試,我輸入華為美女 100 張,結果程序給了我 130 張,XDM 你們說測試通過嗎?1e9d2b9c37f91b29f05f234878b20cb3.webp

        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





        掃描二維碼獲取

        更多精彩

        604d2b00368ea1f77b597094d8110156.webp

        胡琦

        ab3c66e3efa4442bb1dae08755a9437e.webp


        ModelArts 搭建 darknet 環(huán)境

        2021-07-07

        77ad3ed9a3ac6ccc74fe08f36d978ca1.webp

        您有一份拉勾教育專欄資料請查收

        2021-07-07

        f8f711c530ecb150ada5e63aab1a8575.webp

        “夢回童年,盡享美食“-- AI 識別童年美食

        2021-06-01

        880622bbe74a0fd2ad7998f5dcf2525d.webp

        快速獲取數據集的秘訣居然是……

        2021-06-01

        b9f75754d25f775f3aa834319e4386f0.webp




        點擊左下角查看更多

        58f401b6fb3d3b12367af33a854476d7.webp

        瀏覽 116
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 欧美日韩福利在线欧美日韩福利在线 | 无码大黑鸡巴 | 亚洲欧洲成人AV每日更新 | 国产精品国产三级国产aⅴ浪潮 | 抵在餐桌上蹂躏跪趴np |