Python爬蟲獲取招聘網站職位信息

Python爬蟲獲取招聘網站職位信息

摘要

本文介紹使用Python編寫爬蟲,獲取招聘網站中感興趣的職位信息。html

好的開始,成功一半。另外一半呢?知己知彼,百戰百勝。python

0. 環境

0.1 Python解釋器安裝

推薦使用Anaconda發行版,其包含了多個科學包及其依賴項。官網爲:https://www.anaconda.com/app

能夠從官網下載安裝包,在本地安裝,將安裝以後的位置做爲環境變量加入到系統環境變量的PATH中。編輯器

Anaconda通常安裝以後的位置爲:C:\ProgramData\Anaconda3ide

Python爬蟲獲取招聘網站職位信息

0.2 集成開發環境

IDE(集成開發環境,Integrated Development Environment ):這一類開發環境通常包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套件。工具

推薦使用PyCharm的社區版,官網爲:https://www.jetbrains.com/pycharmpost

Python爬蟲獲取招聘網站職位信息

1. 肯定目標

這裏的目標就是指要爬取的內容,打開招聘網站:https://www.51job.com:在搜索框中輸入python,並點擊搜索,會獲得下面的結果,一共63頁,3000餘條職位信息:網站

Python爬蟲獲取招聘網站職位信息
裏面的每個職位點開以後的頁面包含職位的相關信息,咱們的目標就是將這些信息爬取並保存到本地。ui

Python爬蟲獲取招聘網站職位信息

2. 請求

全部的職位信息頁面的網址相似於以下形式:url

https://jobs.51job.com/nanjing-jnq/91355381.html?s=01&t=0
https://jobs.51job.com/wuxi/97144561.html?s=01&t=0
https://jobs.51job.com/nanjing-qhq/106264137.html?s=01&t=0
。。。

這些頁面網址沒有多少規律可循,可是能夠從職位搜索結果頁面中獲取到:

Python爬蟲獲取招聘網站職位信息

經過獲取任意頁數的職位名這一位置的連接,就可以獲取這些職位信息的連接頁面。

https://search.51job.com/list/070000,000000,0000,00,9,99,Python,2,1.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=4&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=
https://search.51job.com/list/070000,000000,0000,00,9,99,Python,2,2.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=4&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=

搜索結果地址中的python是查詢的關鍵字,兩個連接的差別之處,就是查詢結果的第幾頁,因此能夠根據這一點構建全部的搜索結果頁面。

KEYWORD = 'python'
MAX_PAGE = 10

for i in range(MAX_PAGE + 1):
    temp_url = 'https://search.51job.com/list/070000,000000,0000,00,9,99,' + KEYWORD + ',2,' + str(
        i) + '.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=4&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='

經過requests包的的請求功能,獲取到頁面:

r = requests.get('https://jobs.51job.com/nanjing-jnq/91355381.html?s=01&t=0')
r.encoding = 'gbk'
print(r.text)

3. 解析

在搜索結果頁面中須要解析出每個職位的連接,同時在職位詳細信息頁面,要解析出職位名稱,公司名稱,工資,所在城市,職位信息等內容。

解析可使用python中的lxml庫進行解析,最經常使用的解析方式爲xpath方式,經過Chrome中的F12開發者工具來獲取xpath並調試。

Python爬蟲獲取招聘網站職位信息
在F12開發者工具中,左上角的選擇按鈕能夠在頁面上選取感興趣的元素,而後下面的元素窗口將高亮顯示選中的元素。

在高亮顯示的元素上,右鍵單擊,在彈出的菜單中選擇Copy -> Copy XPath,便可得到此元素的XPath。

而後在此元素基礎之上,能夠經過@屬性的方式獲取元素的屬性值,例如得到職位的連接地址:

//*[@id="resultList"]/div[4]/p/span/a/@href
結果爲:
https://jobs.51job.com/nanjing/107228497.html?s=01&t=0

或經過text()方式獲取元素的顯示內容,例如職位詳細信息裏面的各項值:

/html/body/div[3]/div[2]/div[2]/div/div[1]/strong/text()
結果爲:
0.5-1.5萬/月

4. 存儲

爲方便後續的數據分析和繪圖,咱們將結果存儲在excel表中,經過openpyxl庫來實現。

在openpyxl中,主要用到三個概念:Workbooks,Sheets,Cells。Workbook就是一個excel工做表;Sheet是工做表中的一張表頁;Cell就是一個單元格。

首先引入庫:

from openpyxl import Workbook

而後建立xlsx文件:

wb = Workbook()

獲取激活的sheet:

sheet = wb.active

在其中編輯單元格的內容,將前面獲取的職位信息寫入到表格中:

sheet.append(list(temp_info.values()))

最後將wb保存成一個文件:

wb.save('result.xlsx')

5. 代碼

完整代碼參見附件。

點擊連接可索取完整代碼哦~

驗證:星空

相關文章
相關標籤/搜索