讓大蛇(Python)幫你找工作
阿新 • • 發佈:2019-01-22
最近有想換工作的想法,於是習慣性的去了XXX網站看有沒有合適的職位,輸入幾個條件後,便開始了對海量的資料進行一頁一頁的瀏覽,不知不覺也就走了神........
作為程式設計師怎麼可以這樣找工作了?於是想寫個程式來做這個無聊而重複的賽選工作,最近在研究Python,真好又從書上看到了有個叫"網路爬蟲"的概念,本來以為這是個複雜的技術,沒想到區區幾行幾代便揭開了這隻"爬蟲"的面紗,於是針對這個網站試著寫一個"爬蟲".
經過三天晚上的加班,終於大功告成,執行程式兩分鐘左右4萬多個職位已經全部儲存到我本地的檔案中.
目前只是簡單的版本,只能根據你輸入的條件獲取到所有結果中的"職位名稱"以及"公司名稱",如果想要進行擴充套件,例如展示出"職位的技能要求,待遇"等可以在已有功能的基礎上進行擴充套件.下面是原始碼以及思路.(考慮到執行該爬蟲可能會對該網站的效能有一定的影響,所以程式中沒有給出該網站的真實資訊,如果您猜出了該網站的真實資訊,也請不要在本部落格中公佈,否則一切後果自負,謝謝合作 )
import urllib.request import re PAGE_NUMBER = 1 def filter_job(url): #Python 3.X 必須用 urllib.request開啟一個URL text = urllib.request.urlopen(url).read().decode("gbk") page_navi(text) def page_navi(page_source): #第一頁直接獲取資訊 extract_job_info(page_source) #"下一頁"連結的正則 next_page_regular = r'</td><td><a href=(.*?)class="orange1".+?style=.*?>(.*?)<img .*?pageron.gif.*? />.*?</a></td></tr>' next_pagelink_set = re.findall(next_page_regular, page_source) if len(next_pagelink_set) > 0: #如果需要更改全域性變數,則需要先用global來宣告 global PAGE_NUMBER PAGE_NUMBER = PAGE_NUMBER + 1 print("*****************************"+str(PAGE_NUMBER)+"******************************") next_url = next_pagelink_set[0][0].split('"')[1] #解析出"下一頁"按鈕對應的連結,然後遞迴呼叫 filter_51job(next_url) def extract_job_info(page_source): #職位名稱的正則 job_name_reqular = r'<a .*? class="jobname" .*>(.*?)</a>' #公司名稱的正則 com_name_reqular = r'<a .*? class="coname" .*>(.*?)</a>' job_name_set = re.findall(job_name_reqular, page_source) com_name_set = re.findall(com_name_reqular, page_source) #使用zip()對結果進行展示 for job_name, com_name in zip(job_name_set, com_name_set): print("Job Name:" + job_name + " "*5 + " Company Name:" + com_name) if __name__ == "__main__": #輸入一定條件後,結構列表的首頁URL,只要輸入這個作為條件 url = '''http://XXXXX.XXXXXXX.com/list/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX''' filter_job(url)
以上程式碼只是列出的基本的資訊,如果有什麼好的建議,或者是改進的地方,歡迎指出