1. 程式人生 > >讓大蛇(Python)幫你找工作

讓大蛇(Python)幫你找工作

最近有想換工作的想法,於是習慣性的去了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)


以上程式碼只是列出的基本的資訊,如果有什麼好的建議,或者是改進的地方,歡迎指出