python爬取前程无忧_用python爬取前程无忧网,看看我们是否真的“前程无忧”?...
The best time to plant a tree was 10 years ago,the second best time is now.
种一棵树最好的时间是十年前,其次是现在。
利用python爬取在前程无忧网搜索python关键字出现的最新的招聘数据,保存到本地Excel,进行数据查看和预处理,然后利用matplotlib进行数据分析和可视化。
1. 爬取数据
目标url:https://www.51job.com/
在前程无忧网输入关键字python,搜索有关的岗位数据。翻页查看这些招聘岗位信息,可以发现url翻页的规律。
检查网页源代码,可以找到想要提取的数据。
部分爬虫代码如下,完整见文末下载
async def parse(self, text):
# 正则匹配提取数据
try:
job_name = re.findall('"job_name":"(.*?)",', text) # 职位
company_name = re.findall('"company_name":"(.*?)",', text) # 公司名称
salary = re.findall('"providesalary_text":"(.*?)",', text)
salary = [i.replace('\\', '') for i in salary] # 薪酬 去掉 \ 符号
city = re.findall('"workarea_text":"(.*?)",', text) # 城市
job_welfare = re.findall('"jobwelf":"(.*?)",', text) # 职位福利
attribute_text = re.findall('"attribute_text":(.*?),"companysize_text"', text)
attribute_text = ['|'.join(eval(i)) for i in attribute_text]
companysize = re.findall('"companysize_text":"(.*?)",', text) # 公司规模
category = re.findall('"companyind_text":"(.*?)",', text)
category = [i.replace('\\', '') for i in category] # 公司所属行业 去掉 \ 符号
datas = pd.DataFrame({'company_name': company_name, 'job_name': job_name, 'companysize': companysize, 'city': city, 'salary': salary, 'attribute_text': attribute_text, 'category': category, 'job_welfare': job_welfare})
datas.to_csv('job_info.csv', mode='a+', index=False, header=True)
logging.info({'company_name': company_name, 'job_name': job_name, 'company_size': companysize, 'city': city, 'salary': salary, 'attribute_text': attribute_text, 'category': category, 'job_welfare': job_welfare})
except Exception as e:
print(e)
运行效果如下:
爬取了200页的招聘数据,共10000条招聘信息,用时49.919s。
2. 数据查看和预处理
import pandas as pd
df = pd.read_csv('job_info.csv')
# 异步爬虫爬取数据时 datas.to_csv('job_info.csv', mode='a+', index=False, header=True) 删除多的列名
df1 = df[df['salary'] != 'salary']
# 查看前10行
df1.head(10)
# city那一列数据 处理为城市
# 按 - 分割 expand=True 0那一列重新赋值给df['city']
df1['city'] = df1['city'].str.split('-', expand=True)[0]
df1.head(10)
# 经验要求 学历要求 有的话是在attribute_text列里
df['attribute_text'].str.split('|', expand=True)
df1['experience'] = df1['attribute_text'].str.split('|', expand=True)[1]
df1['education'] = df1['attribute_text'].str.split('|', expand=True)[2]
df1
保存为已清洗数据
df1.to_csv('已清洗数据.csv', index=False)
查看索引、数据类型和内存信息
df2 = pd.read_csv('已清洗数据.csv')
df2.info()
3. 数据分析与可视化
(1) 柱形图展示招聘岗位数最多的城市Top10
代码如下:
import pandas as pd
import random
import matplotlib.pyplot as plt
import matplotlib as mpl
df = pd.read_csv('已清洗数据.csv')
# 有些是异地招聘 过滤掉
data = df[df['city'] != '异地招聘']['city'].value_counts()
city = list(data.index)[:10] # 城市
nums = list(data.values)[:10] # 岗位数
print(city)
print(nums)
colors = ['#FF0000', '#0000CD', '#00BFFF', '#008000', '#FF1493', '#FFD700', '#FF4500', '#00FA9A', '#191970', '#9932CC']
random.shuffle(colors)
# 设置大小 像素
plt.figure(figsize=(9, 6), dpi=100)
# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 绘制柱形图 设置柱条的宽度和颜色
# color参数 每根柱条配置不同颜色
plt.bar(city, nums, width=0.5, color=colors)
# 添加描述信息
plt.title('招聘岗位数最多的城市Top10', fontsize=16)
plt.xlabel('城市', fontsize=12)
plt.ylabel('岗位数', fontsize=12)
# 展示图片
plt.show()
运行效果如下:
['上海', '深圳', '广州', '北京', '杭州', '成都', '武汉', '南京', '苏州', '长沙']
[2015, 1359, 999, 674, 550, 466, 457, 444, 320, 211]
上海、深圳、广州、北京提供了很多岗位,杭州、成都、武汉、南京等城市的招聘岗位数量也比较可观。
(2) 计算岗位数据的薪酬,处理为多少K/月,划分薪酬区间,统计薪酬分布情况,饼图展示。
代码如下:
# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置大小 像素
plt.figure(figsize=(9, 6), dpi=100)
plt.axes(aspect='equal') # 保证饼图是个正圆
explodes = [0, 0, 0, 0.1, 0.2, 0.3, 0.4, 0.5]
plt.pie(nums, pctdistance=0.75, shadow=True,
colors=colors, autopct='%.2f%%', explode=explodes,
startangle=15, labeldistance=1.1,
)
# 设置图例 调节图例位置
plt.legend(part_interval, bbox_to_anchor=(1.0, 1.0))
plt.title('招聘岗位的薪酬分布', fontsize=15)
plt.show()
运行效果如下:
招聘岗位给的薪酬在5K-10K和10K-15K区间所占的比例较大,也有一定比例的50K以上的高薪资岗位。
(3) 查看招聘岗位对学历的要求的情况,水平柱形图可视化。
mport pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
df = pd.read_csv(r'已清洗数据.csv')['education']
data = df.value_counts()
labels = ['大专', '本科', '硕士', '博士']
nums = [data[i] for i in labels]
print(labels)
print(nums)
colors = ['cyan', 'red', 'yellow', 'blue']
# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置显示风格
plt.style.use('ggplot')
# 设置大小 像素
plt.figure(figsize=(8, 6), dpi=100)
# 绘制水平柱状图
plt.barh(labels, nums, height=0.36, color=colors)
plt.title('招聘岗位对学历的要求', fontsize=16)
plt.xlabel('岗位数量', fontsize=12)
plt.show()
运行效果如下:
['大专', '本科', '硕士', '博士']
[2052, 6513, 761, 45]
(4) 查看招聘岗位对工作经验的要求的情况,水平柱形图可视化。
由于得到的工作经验列里的数据并不规范,统计时需做特殊处理
代码如下:
# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置显示风格
plt.style.use('ggplot')
# 设置大小 像素
plt.figure(figsize=(9, 6), dpi=100)
# 绘制水平柱状图
plt.barh(labels, nums, height=0.5, color=colors)
plt.title('招聘岗位对工作经验的要求', fontsize=16)
plt.xlabel('岗位数量', fontsize=12)
plt.show()
运行效果如下:
3-4年经验 3361
2年经验 2114
1年经验 1471
5-7年经验 1338
在校生\/应届生 661
无需经验 417
本科 182
8-9年经验 105
10年以上经验 64
硕士 59
招1人 57
招若干人 57
招2人 42
大专 30
招3人 14
博士 11
招5人 9
招4人 5
招10人 2
招7人 1
Name: experience, dtype: int64
['无需经验', '1年经验', '2年经验', '3-4年经验', '5-7年经验', '8-9年经验', '10年以上经验']
[1260, 1530, 2114, 3372, 1338, 105, 64]
【】#### (5) 查看招聘公司所属行业的分布情况,词云展示。
代码如下:
import pandas as pd
import collections
from wordcloud import WordCloud
import matplotlib.pyplot as plt
df = pd.read_csv(r'已清洗数据.csv')['category']
data = list(df.values)
word_list = []
for i in data:
x = i.split('/')
for j in x:
word_list.append(j)
word_counts = collections.Counter(word_list)
# 绘制词云
my_cloud = WordCloud(
background_color='white', # 设置背景颜色 默认是black
width=900, height=500,
font_path='simhei.ttf', # 设置字体 显示中文
max_font_size=120, # 设置字体最大值
min_font_size=15, # 设置子图最小值
random_state=60 # 设置随机生成状态,即多少种配色方案
).generate_from_frequencies(word_counts)
# 显示生成的词云图片
plt.imshow(my_cloud, interpolation='bilinear')
# 显示设置词云图中无坐标轴
plt.axis('off')
plt.show()
运行效果如下:
(6) 查看招聘岗位的职位福利,词云展示。
代码与上文一致
运行效果如下:
职位福利关键词中出现频率较高的有五险一金、年终奖金、绩效奖金、定期体检、餐饮补贴等。
源码&数据下载
https://alltodata.cowtransfer.com/s/b1c87350fd8a47
python爬取前程无忧_用python爬取前程无忧网,看看我们是否真的“前程无忧”?...相关推荐
- python爬房源信息_用python爬取链家网的二手房信息
题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...
- python自动排课表_利用python爬取广西科技大学教务管理信息系统班级课表
操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...
- python视频网站分类_用Python爬取b站视频
本文概要 爬取B站视频的办法在csdn和B站有很多 但是本文算作是对爬取步骤的一个拆解 同时也算是我的笔记.本代码的参考对象是https://blog.csdn.net/Mr_Ohahah/artic ...
- python爬取数据分析_使用Python爬取社交网络数据分析
在线社交网站为人们提供了一个构建社会关系网络和互动的平台.每一个人和组织都可以通过社交网站互动.获取信息并发出自己的声音,因而吸引了众多的使用者.作为一个复杂的社会系统,在线社交网站真实地记录了社会网 ...
- python唯美壁纸_用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)
参考文章:https://www..com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只是很久之前学过 ...
- python b站 礼物_用Python爬取并分析了B站最热排行榜,我发现了这些秘密
现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉丝的u ...
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- python新闻关键词次数_使用python抓取百度搜索、百度新闻搜索的关键词个数
由于实验的要求,需要统计一系列的字符串通过百度搜索得到的关键词个数,于是使用python写了一个相关的脚本. 在写这个脚本的过程中遇到了很多的问题,下面会一一道来. ps:我并没有系统地学习过pyth ...
- python 人数取整_避免PYTHON取整四舍六入五成双问题
python中关于round函数的小坑 - _小苹果 - 博客园www.cnblogs.com 同样的坑:整数a/100 不等于a×0.01 在python2.7的doc中,round()的最后写着 ...
- python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容
利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...
最新文章
- mac通过tree源码编译安装tree
- 影响生产计划制定的因素_石料生产线选砂石原骨料时的技巧及影响破碎的因素...
- linux关机命令详解
- 程序编译出错,缺少类型说明符;语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- 微服务架构·基础篇,傻瓜看了都会
- 【数据竞赛】这篇文章送给想要学习特征交叉的朋友。
- 博士申请 | 加拿大Mila实验室唐建教授招收深度学习方向博士生和实习生
- linux 命令 考试,linux常用命令总结-第一次考试
- 工龄是怎么计算的?几个月算工龄吗?
- Divide and conquer method
- nvm 下载node 下载不下来_挑战不可能最新版手游下载_挑战不可能最新版安卓版下载...
- 转:集群、分布式、负载均衡区别与联系
- Python使用matplotlib可视化模拟龟兔赛跑折线图
- Vue中如何解决跨域问题
- 企业微信和个人微信的区别是什么?
- mysql空洞,mysql crud造成数据空洞的原因
- 利用ffmpeg将m3u8下载成mp4(利用ps1脚本解析json批量下载)
- Ubuntu移除PDF密码
- 数据结构实验二:7-2 两个有序链表序列的合并
- GEEer成长日记十三:Landsat_SR计算地表温度时间序列
热门文章
- 实习笔记:空间分析+地形分析+水文分析
- Linux secure 日志分析
- 安装CP2102驱动2021
- 武汉学员,我们和传智播客boss在一起
- 7tpro android11,一加7/7Pro/7T/Pro等机型安卓11底层氢OS11刷机包推送-支持root
- 计算机课教学软件,计算机实用工具软件课程的的特点及教学的方法.doc
- Linux十大桌面环境
- 我国土地资源开发利用中存在的主要问题
- QT 触摸屏下滑滚动
- Python破解WIFI升级版保姆级教程,多线程破解+界面(附赠密码本)