
影刀RPA實操指南招聘信息批量采集與崗位需求分析想換工作的人挨個刷新崗位頁做行業(yè)研究的人手動抄幾百條崗位要求進(jìn)Excel這兩類人的痛點是同一個招聘網(wǎng)站的崗位數(shù)據(jù)太散人工整理一天也就幾百條還容易抄錯薪資。我用影刀RPA做了一個招聘信息批量采集流程跑一次能落幾千條崗位數(shù)據(jù)到表格再用Python做崗位需求分析招聘網(wǎng)站只是個數(shù)據(jù)源主動權(quán)在自己手里。這篇影刀RPA實操指南帶你從零做一遍完整流程搜索條件怎么批量傳、崗位列表怎么循環(huán)采集、詳情頁怎么進(jìn)怎么退、薪資文本怎么清洗成可統(tǒng)計的字段、最后怎么出分析結(jié)論。跟著做完你會有一個可復(fù)用的采集模板以后換任何招聘站點改改定位就能用。我非技術(shù)出身這套流程改過三版中間踩的坑都會在對應(yīng)章節(jié)講清楚。認(rèn)識影刀RPA與安裝五步搞定開發(fā)環(huán)境第一步官網(wǎng)下載客戶端安裝手機(jī)號注冊登錄。第二步設(shè)置里安裝瀏覽器插件Chrome和Edge都支持裝完刷新瀏覽器。第三步打開影刀左側(cè)是流程列表中間是編輯畫布右側(cè)是指令面板所有功能都靠拖拽指令到畫布上完成。第四步新建一個應(yīng)用命名建議帶上日期比如招聘采集_20260927。第五步先跑一遍官方示例流程確認(rèn)環(huán)境正常再開始寫自己的。社區(qū)版每天30分鐘運(yùn)行時長調(diào)試階段完全夠批量跑大任務(wù)時注意分批或者考慮創(chuàng)業(yè)版。元素定位四合一崗位列表是所有采集流程的起點招聘網(wǎng)站的崗位列表是典型的相似元素結(jié)構(gòu)幾十條卡片結(jié)構(gòu)相同內(nèi)容不同。處理它靠四個定位工具配合。元素捕獲解決抓到第一條XPath解決抓到所有條和抓準(zhǔn)某一條。下面是招聘列表頁最常用的幾種寫法# 捕獲元素崗位列表中的所有崗位卡片鏈接 //div[classjob-list-box]//a # 模糊匹配崗位名稱里包含數(shù)據(jù)分析的卡片 //div[contains(class,job-card)]//*[contains(text(),數(shù)據(jù)分析)] # 層級定位從薪資標(biāo)簽往上找兩層再取公司名父級容器內(nèi)定位 //span[contains(class,salary)]/../../div[classcompany-info]//h3 # 參照物定位通過經(jīng)驗標(biāo)簽定位同一卡片內(nèi)的薪資 //*[contains(text(),年) and contains(class,exp)]/following-sibling::span[1]CSS選擇器和XPath并列講因為你要會在兩者之間選。CSS擅長簡單結(jié)構(gòu)div.job-list-box a一行搞定所有鏈接執(zhí)行也快但按文本找元素往上找父級只有XPath能做。我的習(xí)慣是列表主體用CSS或簡單XPath跨節(jié)點關(guān)聯(lián)用復(fù)雜XPath。正則表達(dá)式在兩個地方出場一是元素編輯里用正則匹配動態(tài)class二是數(shù)據(jù)清洗階段從薪資文本里提取數(shù)字比如從15-25K·14薪里摳出15、25、14三個數(shù)第四節(jié)數(shù)據(jù)處理部分給完整代碼。另外影刀還有點擊指定內(nèi)容的元素(web)指令可以直接按文本內(nèi)容點某個崗位卡片不用寫XPath進(jìn)詳情頁時很好用。變量與數(shù)據(jù)類型搜索條件和崗位數(shù)據(jù)怎么組織流程要用三類變量搜索條件用列表存比如 [“數(shù)據(jù)分析”,“產(chǎn)品經(jīng)理”,“運(yùn)營”]一個城市一個關(guān)鍵詞跑一輪每條崗位用字典存鍵是 崗位名、公司、薪資、經(jīng)驗、城市、鏈接字典的好處是寫入Excel時按鍵取值順序亂了也不出錯所有崗位攢成一個列表的列表最后一次性寫表。JSON的套路也要會有些站點接口返回JSON字符串流程是HTTP獲取→JSON轉(zhuǎn)Python對象→操作字段→需要存文件時再轉(zhuǎn)回文本。字典鍵不存在時影刀返回空值寫表前判斷一下不然Excel里會出現(xiàn)難看的報錯信息。流程控制三層循環(huán)加異常處理的采集骨架主流程骨架三層循環(huán)外層ForEach列表循環(huán)跑關(guān)鍵詞和城市組合中層循環(huán)相似元素(web)跑當(dāng)前頁的崗位列表內(nèi)層While條件循環(huán)管翻頁。詳情頁的處理是這個流程的易錯點點崗位卡片經(jīng)常打開新標(biāo)簽頁。正確做法是用獲取已打開的網(wǎng)頁對象指令把新標(biāo)簽頁存成另一個變量對它提取詳情字段抓完用關(guān)閉網(wǎng)頁關(guān)掉循環(huán)會自動回到列表頁的下一個元素。官方文檔對打開了新標(biāo)簽頁的場景專門給過方案核心就是新網(wǎng)頁對象用不同變量名。Try-Catch必須包住整個循環(huán)體。Catch里用輸出日志記錄失敗的崗位鏈接和報錯內(nèi)容Finally里關(guān)掉可能殘留的新標(biāo)簽頁。我第一版沒做異常處理跑到第300條遇到一個失效崗位整條流程直接停了前面數(shù)據(jù)全在內(nèi)存里沒落表心疼得我當(dāng)晚就重構(gòu)了。網(wǎng)頁自動化等待、翻頁與登錄態(tài)三個必答題等待策略招聘詳情頁是懶加載重災(zāi)區(qū)詳情頁的職位描述經(jīng)常滾動才加載全。標(biāo)準(zhǔn)流程點擊進(jìn)詳情后先等待元素(web)等職位描述容器出現(xiàn)超時10秒再滾動鼠標(biāo)滾輪滾兩次觸發(fā)懶加載每次滾動后等待頁面底部元素出現(xiàn)。固定等待幾秒的做法在網(wǎng)速波動時必掛別用。翻頁disabled判斷是通用解法招聘站的翻頁按鈕翻到底會變灰。用IF 元素可見(web)配一個XPath判斷可點擊狀態(tài)的下一頁按鈕//a[contains(class,next) and not(contains(class,disabled))]抓不到就說明翻完了跳出While循環(huán)。這個寫法幾乎通用于所有分頁網(wǎng)站記下來值回票價。登錄態(tài)與驗證碼多數(shù)招聘站要登錄才能看聯(lián)系方式或翻多頁。流程開頭判斷登錄框可見就走登錄子流程登錄成功后瀏覽器會記住Cookie后續(xù)運(yùn)行只要登錄態(tài)沒過期就跳過。有些站點頻繁訪問會彈驗證碼頻率控制在每次訪問間隔2到3秒、每天別抓太多頁比硬破驗證碼現(xiàn)實得多。數(shù)據(jù)處理薪資清洗與崗位需求詞頻分析采集只是原材料需求分析才是價值所在。原始數(shù)據(jù)先落Excel用寫入內(nèi)容至Excel工作表逐行寫或者攢進(jìn)數(shù)據(jù)表格后寫入表格數(shù)據(jù)一次寫完。薪資是最需要清洗的字段統(tǒng)一換算成月薪區(qū)間# 輸入salary_raw網(wǎng)頁抓到的薪資文本如 15-25K·14薪 或 200-400元/天# 輸出salary_min / salary_max統(tǒng)一為月薪千元importre salary_rawsalary_raw.strip().replace( ,)mre.search(r(\d)-(\d)K·(\d)薪,salary_raw)ifm:# 15-25K·14薪 → 月薪區(qū)間乘以 (14/12) 的年薪折算salary_minint(m.group(1))*int(m.group(3))/12salary_maxint(m.group(2))*int(m.group(3))/12else:mre.search(r(\d)-(\d)K,salary_raw)ifm:salary_min,salary_maxint(m.group(1)),int(m.group(2))else:salary_min,salary_max0,0# 面議或格式不識別標(biāo)記為0后續(xù)過濾清洗完用Pandas做統(tǒng)計按城市分組算平均薪資、按經(jīng)驗區(qū)間分布、崗位描述里的技能詞詞頻“SQL”“Python”Excel出現(xiàn)次數(shù)一張崗位需求畫像就出來了。這些都可以直接寫在影刀的Python代碼段里不用離開RPA環(huán)境。鼠標(biāo)鍵盤與圖像自動化少用但要有兜底手段網(wǎng)頁自動化能覆蓋95%的招聘采集需求剩下5%靠鼠標(biāo)鍵盤和圖像兜底。個別站點驗證碼彈窗沒有固定元素結(jié)構(gòu)用等待圖像和點擊圖像按截圖匹配處理滑塊驗證碼用拖拽元素或模擬鼠標(biāo)拖動配合錨點偏移量。影刀支持虛擬鍵盤鼠標(biāo)驅(qū)動安裝后操作不搶占真實鼠標(biāo)跑流程時人可以繼續(xù)干別的這個驅(qū)動建議裝上。鍵盤操作主要用在搜索框?qū)嵲诙ㄎ徊坏捷斎肟蛟貢r點擊后用模擬鍵盤逐字輸入再用回車觸發(fā)搜索。這是最后的手段能用填寫輸入框(web)就別用鍵盤模擬前者快且穩(wěn)。進(jìn)階技能接口監(jiān)聽讓采集效率翻倍招聘列表頁的數(shù)據(jù)通常來自一個返回JSON的接口。用影刀的開始監(jiān)聽網(wǎng)頁請求指令監(jiān)聽這個接口地址翻頁時用使用網(wǎng)頁監(jiān)聽指令獲取數(shù)據(jù)直接拿JSON一條接口響應(yīng)里往往帶著整頁幾十條崗位的全部字段比在頁面上循環(huán)提取快好幾倍還不受頁面渲染影響。流程變成監(jiān)聽→點下一頁→拿響應(yīng)→JSON轉(zhuǎn)對象→提取字段循環(huán)寫表。缺點是每個站的接口地址和字段名不同遷移成本高所以我把它和頁面采集做成兩個子流程結(jié)構(gòu)簡單的站點走頁面采集結(jié)構(gòu)復(fù)雜或反爬嚴(yán)的走接口監(jiān)聽。系統(tǒng)聯(lián)動定時采集與飛書多維表格沉淀采集任務(wù)用定時觸發(fā)器安排支持每日、每周、自定義間隔和Cron表達(dá)式跳過法定節(jié)假日也可以勾選。我的配置是每天早上7點跑一輪上班前數(shù)據(jù)已經(jīng)在表里了。觸發(fā)器生效的前提是高級任務(wù)計劃已啟用機(jī)器不能休眠Windows電源設(shè)置里關(guān)掉睡眠。結(jié)果沉淀推薦飛書多維表格用新增行記錄-飛書多維表指令把每條崗位寫進(jìn)多維表團(tuán)隊多人直接在線看還能自己加篩選視圖。發(fā)版到企業(yè)調(diào)度的話任務(wù)監(jiān)控頁面可以配置告警郵箱和釘釘、飛書通知流程異常自動提醒無人值守才安心。工程化規(guī)范模板化讓你換一個站點只改三處這套流程我按模板思路拆了子流程01_登錄?;睢?2_搜索與翻頁、03_列表提取、04_詳情提取、05_數(shù)據(jù)清洗、06_落表與推送。換新站點時通常只改三處列表和詳情的元素定位、翻頁判斷的class名、字段清洗的正則。每個子流程的輸入輸出參數(shù)在屬性面板里寫清楚注釋命名用編號加下劃線主流程讀起來就是一份目錄。調(diào)試技巧在可疑指令上右鍵添加斷點點單步執(zhí)行一行行跑變量面板里實時看每個變量的值。九成定位問題都是靠單步加變量面板排查出來的比反復(fù)整體運(yùn)行快十倍。易錯速查表招聘采集高頻翻車點現(xiàn)象原因解決辦法跑到一半整條流程停止詳情頁異常未捕獲循環(huán)體包Try-CatchCatch記錄并繼續(xù)下一條抓到的薪資是面議或亂碼字段結(jié)構(gòu)隨頁面改版變化清洗時未匹配到正則就標(biāo)記0事后過濾補(bǔ)抓新標(biāo)簽頁打開了但取不到數(shù)據(jù)用錯網(wǎng)頁對象變量獲取已打開的網(wǎng)頁對象存成新變量再操作翻頁循環(huán)卡死一直重復(fù)disabled判斷寫反或class變了單步執(zhí)行檢查判斷條件XPath加not(disabled)運(yùn)行時長超了社區(qū)版限制一次任務(wù)量太大分城市分關(guān)鍵詞多次運(yùn)行或夜間定時錯峰學(xué)習(xí)資源與延伸閱讀官方文檔里網(wǎng)頁相似元素循環(huán)常見場景及解決方案這篇是招聘采集的必讀新標(biāo)簽頁、頁面刷新兩大坑都給了官方解法。整套招聘采集與分析流程的完整源碼我放在代碼倉庫 home.linyan.cloud可以直接參考改造替換關(guān)鍵詞和定位就能適配你目標(biāo)的城市和崗位。#影刀RPA #RPA自動化 #數(shù)據(jù)采集 #批量采集 #數(shù)據(jù)處理 #Python作者林焱