Python爬蟲學習(二) ——————爬取前程無憂招聘信息並寫入excel


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

 我們可以看到這里羅列了"職位名"、"公司名"、"工作地點"、"薪資"、"發布時間",那么我們就把這些信息爬取下來吧!確定了需求,下一步我們就審查元素找到我們所需信息所在的標簽,再寫一個正則表達式把元素篩選出來就可以了!

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

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)
完成這關鍵的一步,下面寫入本地就灰常簡單了!還是來段代碼吧!
 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可以知道修改一下關鍵字名稱就可以了!可以定義成一個函數只需輸入關鍵字,然后就可以自動爬取該工作的招聘信息!條條大路通羅馬,想要實現上面的效果肯定不止這一種方法,以上內容僅供參考,希望可以給有需要的朋友提供一點思路!至於代碼就比較粗糙了,而本人也希望有一天能夠寫得一手風騷代碼!還是要重申一遍,本人能力有限,文章中可能會有紕漏或者錯誤,也歡迎表哥表姐們前來指正!謝謝大家!

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM