1.序言
一個人的心有多大,世界就有多大,只是太多的人只能看到眼前的苟且,於是自己的一生就和苟且做鬥爭,最後也只是輸給了自己的眼界而已。今天要帶大家抓取的是銳仕方達獵頭網站,裏面有很多成功的招聘案例,這是一個靜態網站,適合初學者或者缺乏項目實戰經驗者學習,爲了方便大家理解和閱讀,我做了詳細的思路剖析。
2.項目實戰剖析
網站分析:
目標源地址url:www.risfond.com/case/fmcg/2…
點擊右鍵查看網頁源代碼,會發現上圖方框內的內容在網頁源代碼(下圖)是可以找到的!
所以我們可以使用python內置的模塊去訪問網址,這裏可以用requests或者urllib,因爲之前介紹過requests模塊的使用,這裏我們就不做過多闡述,直接用urllib開戰!雖然requests真的好用太多,但初學者其實也是需要學習內容的,技術無罪。接下來就開始我們的實戰!
實戰思路剖析:
1.獲取網站源碼
2.從源碼解析所需要的數據
3.數據存儲到excel
實戰步驟講解
第一步:獲取網站源碼
需要安裝的庫:pip install xlwt
第一步先導入urllib.request模塊,記住python2跟3在模塊上面使用是有區別的,這個模塊就是如此。
如果我們想訪問多個頁面的話需要找尋網站的網址規律是怎麼樣的
http://www.risfond.com/case/fmcg/26700 ,http://www.risfond.com/case/fmcg/26701,
點擊網址下一條就可以發現網址的規律,網址後面的數字是發生了改變的,
所以可以採用字符串格式化跟range函數,for in來進行使用,基礎知識附帶使用講解下。
1.range函數可以生成一個整數序列,裏面只有一個參數默認從0開始,2個參數是含頭不含尾,示例如下:
2.字符串格式化,%s代表字符串,%d代表數字,當不知道用什麼的情況下可以用%s代替,format是用{}.format()的方式做到字符串格式化的。
3.發送請求
for i in range(26700,26716):
url = 'http://www.risfond.com/case/fmcg/{}'.format(i)
html = urllib.request.urlopen(url).read().decode('utf-8')#urlopen打開網址 read 讀取源代碼
print(html)
複製代碼
第二步:從源碼解析所需要的數據
這裏用的是re正則表達式,可以根據一定的規則從源碼中匹配出相對應的內容,打個比方說,我去水果店買西瓜,西瓜的特徵是果綠色的外殼,紅色的果肉,橢圓形狀,都是根據這個特徵去尋找的,在網站中間也是如此,獲取的內容有着共同的標籤比如div,而且都是在一樣的html佈局中,就可以寫一個正則,用findall去從源碼html中匹配出來。
page_list = re.findall(r'<div class="sc_d_c">.*?<span class="sc_d_con">(.*?)</span></div>',html)
第三步:數據存儲到excel
根據內容,我覺得存儲到excel表格裏面會比較好,所以對每行也寫了一定的註釋,大家可以參考下!
newTable = 'test2019.xls'#表格名稱
wb = xlwt.Workbook(encoding='utf-8') #創建excel文件 設置編碼
ws = wb.add_sheet('rsfd')#表名稱
headData = ['職位名稱','職位地點','時間','行業','招聘時間','人數','顧問']
for colnum in range(0,7):
ws.write(0,colnum,heData[colnum],xlwt.easyxf('font:bold on'))
index = 1
for j in range(0,len(items)):#計算數據有多少條
for i in range(0,7):
print(items[j][i])
ws.write(index,i,items[j][i])#行數 列數 數據
index+=1
wb.save(newTable)#保存
複製代碼
結果如下:我們可以看到所有的數據都被抓下來,並且存儲到名爲test2019的文件夾了。