正文:今天來爬一下boss直聘上關於python在全國的招聘崗位。
開發環境:
- python 3.7.9
- pycharm
用到的庫:
- pandas
- csv
- selenium
- pyecharts (做可視化的時候用到)
爬蟲以及保存csv文件的代碼:
"""
爬取boss直評數據
"""
import pandas as pd
import csv
from selenium import webdriver
f = open('boss直聘修復數據.csv', mode='a', encoding='utf-8-sig', newline='')
csvWriter = csv.DictWriter(f, fieldnames=[
'標題',
'地區',
'薪資',
'經驗',
'學歷',
'公司名',
'公司領域',
'福利',
'是否上市',
'公司規模',
'詳情頁',
'所在城市',
'需具備技能',
])
csvWriter.writeheader() # 先在csv文檔中寫入頭
# 初始化瀏覽器
browser = webdriver.Chrome() #
url = 'https://www.zhipin.com/c100010000/?query=python&page=8&ka=page-8' # 就爬一頁,可以循環爬取所有頁
browser.get(url) # 加載網頁
browser.implicitly_wait(10) # 全局等待10秒,等到網頁加載完成
def get_job_details():
lis = browser.find_elements_by_css_selector('.job-list li') # 找到招聘信息列表
for item in lis: #開始讀取信息
# 標題
title = item.find_element_by_css_selector('.job-name a').get_attribute('title')
# 地區
area = item.find_element_by_css_selector('.job-area').text
# 將地區處理為城市
chengshi = area[0:2]
# 薪資
salaray = item.find_element_by_css_selector('.job-limit .red').text
# 經驗 和學歷
expdata = item.find_element_by_css_selector('.job-limit p').text
# 拆分expdata,將它拆分為經驗和學歷
jingyan = expdata[0:4] # 無論是經驗不限還是1-3年都是四個字符
xueli = expdata[-2:] # 取字符串的最后兩字
# 公司名
companyName = item.find_element_by_css_selector('.company-text .name a').text
# 公司類型
companyStyle = item.find_element_by_css_selector('.company-text p a').text
# 福利
descforworker = item.find_element_by_css_selector('.info-append .info-desc').text
# 是否已經上市和公司人數
ipoeddata = item.find_element_by_css_selector('.company-text p').text # 這里的字符需要處理下
# isipoed = ipoeddata[0].text
# companyWorkers = ipoeddata[1].text
# 詳情頁
detailPage = 'https://www.zhipin.com/' + item.find_element_by_css_selector('.job-name a').get_attribute('href')
suozaichengshi = chengshi
# 所需技能
skillsneed = item.find_element_by_css_selector('.info-append .tags').text
dit = {
'標題':title,
'地區':area,
'薪資':salaray,
'經驗':jingyan, #可能需要拆分
'學歷':xueli,
'公司名':companyName,
'公司領域':companyStyle,
'福利':descforworker,
'是否上市':ipoeddata, # 未處理數據
'公司規模':ipoeddata, # 未處理數據
'詳情頁':detailPage,
'所在城市':area[0:2],
'需具備技能':skillsneed,
}
print(dit) # 打印是否符合預期
get_job_details() # 運行下看是否符合預期
browser.close() # 關閉瀏覽器
保存后的數據如下:

可視化用pyecharts做,方向主要有:
- 每個城市招聘該職位數量的柱狀圖
- 求取下平均工資最高的城市
- 經驗學歷餅圖
- 上市公司占比餅圖
- 公司規模(人數)占比圖
- 公司行業分布圖
- 需要的技能餅圖
