1. 程式人生 > >Python爬蟲獲取招聘網站職位資訊

Python爬蟲獲取招聘網站職位資訊

作為一名Pythoner,相信大家對Python的就業前景或多或少會有一些關注。索性我們就寫一個爬蟲去獲取一些我們需要的資訊,今天我們要爬取的是前程無憂!說幹就幹!進入到前程無憂的官網,輸入關鍵字“Python”,我們會得到下面的頁面

我們可以看到這裡羅列了"職位名"、"公司名"、"工作地點"、"薪資"、"釋出時間",那麼我們就把這些資訊爬取下來吧!確定了需求,下一步我們就審查元素找到我們所需資訊所在的標籤,再寫一個正則表示式把元素篩選出來就可以了!在這裡相信有許多想要學習Python的同學,大家可以+下Python學習分享裙:叄零肆+零伍零+柒玖玖,即可免費領取一整套系統的 Python學習教程

順理成章得到這樣一個正則表示式:

1 # -*- coding:utf-8 -*- 2 import urllib.request 3 import re 4 5 #獲取原碼 6 def get_content(page): 7 url ='http://search.51job.com/list/000000,000000,0000,00,9,99,python,2,'+ str(page)+'.html' 8 a = urllib.request.urlopen(url)#開啟網址 9 html = a.read().decode('gbk')#讀取原始碼並轉為unicode 10 return html 11 12 def get(html): 13 reg = re.compile(r'class="t1 ">.*? <a target="_blank" title="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*? <span class="t5">(.*?)</span>',re.S)#匹配換行符 14 items=re.findall(reg,html) 15 return items 16 17 #多頁處理,下載到檔案 18 for j in range(1,10): 19 print("正在爬取第"+str(j)+"頁資料...") 20 html=get_content(j)#呼叫獲取網頁原碼 21 for i in get(html): 22 #print(i[0],i[1],i[2],i[3],i[4]) 23 with open ('51job.txt','a',encoding='utf-8') as f: 24 f.write(i[0]+'\t'+i[1]+'\t'+i[2]+'\t'+i[3]+'\t'+i[4]+'\n') 25 f.close()

再來一張效果圖

看起來效果還不錯,要是能夠以表格的形式展示出來就更好了,在網上看到有的大佬直接把招聘資訊寫入excel表格,今天我也來試一下吧!其實也並麻煩,只需要將上面的程式碼稍加修改就可以了。下面貼一下程式碼,重要的地方會有註釋。

1 # -*- coding:utf-8 -*- 2 import urllib.request 3 import re 4 import xlwt#用來建立excel文件並寫入資料 5 6 #獲取原碼 7 def get_content(page): 8 url ='http://search.51job.com/list/000000,000000,0000,00,9,99,python,2,'+ str(page)+'.html' 9 a = urllib.request.urlopen(url)#開啟網址 10 html = a.read().decode('gbk')#讀取原始碼並轉為unicode 11 return html 12 13 def get(html): 14 reg = re.compile(r'class="t1 ">.*? <a target="_blank" title="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*? <span class="t5">(.*?)</span>',re.S)#匹配換行符 15 items = re.findall(reg,html) 16 return items 17 def excel_write(items,index): 18 19 #爬取到的內容寫入excel表格 20 for item in items:#職位資訊 21 for i in range(0,5): 22 #print item[i] 23 ws.write(index,i,item[i])#行,列,資料 24 print(index) 25 index+=1 26 27 newTable="test.xls"#表格名稱 28 wb = xlwt.Workbook(encoding='utf-8')#建立excel檔案,宣告編碼 29 ws = wb.add_sheet('sheet1')#建立表格 30 headData = ['招聘職位','公司','地址','薪資','日期']#表頭部資訊 31 for colnum in range(0, 5): 32 ws.write(0, colnum, headData[colnum], xlwt.easyxf('font: bold on')) # 行,列 33 34 for each in range(1,10): 35 index=(each-1)*50+1 36 excel_write(get(get_content(each)),index) 37 wb.save(newTable)

最後實現的效果如下圖:

至此,我們的工作就已經完成了!有的朋友可能想要爬取其他工作的招聘資訊,觀察了一下URl可以知道修改一下關鍵字名稱就可以了!可以定義成一個函式只需輸入關鍵字,然後就可以自動爬取該工作的招聘資訊!條條大路通羅馬,想要實現上面的效果肯定不止這一種方法,以上內容僅供參考,希望可以給有需要的朋友提供一點思路!至於程式碼就比較粗糙了,而本人也希望有一天能夠寫得一手風騷程式碼!還是要重申一遍,本人能力有限,文章中可能會有紕漏或者錯誤,也歡迎表哥表姐們前來指正!謝謝大家!