正文:今天来爬一下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做,方向主要有:
- 每个城市招聘该职位数量的柱状图
- 求取下平均工资最高的城市
- 经验学历饼图
- 上市公司占比饼图
- 公司规模(人数)占比图
- 公司行业分布图
- 需要的技能饼图