秋招这个时候已经开始了,正所谓知己知彼方能百战不殆,今天就从招聘网站下手分析一波机械的就业前景。
这次获取数据的网站是前程无忧,之所以选择前程无忧,是因为数据获取没有什么难度,再者前程无忧提供的岗位信息比智联招聘,拉勾提供的数据都多。
看了一下,前程无忧提供了 2000页/50条 数据,考虑到数据可能有些重复,这里获取 48569 条数据。

数据获取

  • 用到的爬虫框架是 scrapy
  • 解析库 xpath、re、pymongo
  • 保存数据用 mongodb
  • 数据处理用 pyecharts。

打开 https://www.51job.com/ 在搜索框输入机械,跳转到的网页是这个样子的:

这里面的字段还不足以满足我们的需求,还想获取职位描述,和公司的类型,例如国企还是民营等这些数据。于是我们点开看看每一条数据的字段。


框起来的就是我们要获取的内容。
接下来上代码,使用scrapy 提供的默认模板创建爬虫项目。

class A51jobSpider(scrapy.Spider):name = '51job'allowed_domains = ['51job.com']keyword = quote('机械')headers = {'Host': 'search.51job.com','Referer': 'https://www.51job.com/','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}def start_requests(self):'''获取开始抓取的页面'''for i in range(1,1000):url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,'+ self.keyword + ',2,{}.html'.format(str(i))yield scrapy.Request(url=url,headers=self.headers,callback=self.parse_detial_url)def parse_detial_url(self,response):'''获取详情页的url'''s = etree.HTML(response.text)detail_urls = s.xpath('//*[@id="resultList"]/div/p/span/a/@href')for detial_url in detail_urls:url = detial_urlyield scrapy.Request(url=url,headers=self.headers,callback=self.parse)

这里通过重写 start_request 获取详情信息图片的链接,接下来解析具体字段数据:

 def parse(self, response):'''解析详情页具体字段'''item = JixieItem() # 实例化类s = etree.HTML(response.text)jobs = s.xpath('//div[@class="tHeader tHjob"]/div/div[1]/h1/text()')if jobs:item['job'] = jobs[0].strip()else:item['job'] = ''companys = s.xpath('//div[@class="tHeader tHjob"]/div/div[1]/p[1]/a[1]/text()')if companys:item['company'] = companys[0].strip()else:item['company'] = ''company_types = s.xpath('//div[@class="com_tag"]/p/text()')if company_types:item['company_type'] = company_types[0]else:item['company_type'] = ''data = s.xpath('//div[@class="tHeader tHjob"]/div/div[1]/p[2]/text()')if data:item['area'] = data[0].strip()item['experience'] = data[1].strip()item['degree'] = data[2].strip()salarys = s.xpath('//div[@class="tHeader tHjob"]/div/div[1]/strong/text()')if salarys:item['salary'] = salarys[0].strip()else:item['salary'] = ''describes = re.findall(re.compile('<div class="bmsg job_msg inbox">(.*?)div class="mt10"', re.S), response.text)if describes:item['describe'] = describes[0].strip().replace('<p>', '').replace('</p>','').replace('<p>','').replace('<span>','').replace('</span>','').replace('\t','')yield item

items.py 文件了定义了具体的字段。items 是保存爬取数据的容器,使用方法和字典差不多。不过,相比字典,item 多了额外的保护机制,可以避免拼写错误或者定义字段的错误。

class JixieItem(scrapy.Item):# 定义抓取的字段job = Field()company = Field()company_type = Field()area = Field()experience = Field()degree = Field()salary = Field()describe = Field()

接下来把数据保存到 MongoDB 中,这里的代码格式是一样的,几乎不需要修改就可以从 scrapy 的文档中拿过来用:

class MongoPipeline(object):def __init__(self,mongo_uri,mongo_db):self.mongo_uri = mongo_uriself.mongo_db = mongo_db@classmethoddef from_crawler(cls,crawler):return cls(mongo_uri = crawler.settings.get('MONGO_URI'),mongo_db = crawler.settings.get('MONGO_DB'))def open_spider(self,spider):self.client = pymongo.MongoClient(self.mongo_uri)self.db = self.client[self.mongo_db]def process_item(self,item,spider):name = item.__class__.__name__self.db[name].insert(dict(item))return itemdef close_spider(self,spider):self.client.close()

数据获取成功,看一下数据:

数据分析

这一部分才是重头戏

先看一下学历占比

可以看到硕士需求不多,并不是说需求不多,而是在大的环境下,相对来说少。这里的大环境是指据统计全国本科及以上学历比例不到 10%
细心的小伙伴在求职时可以发现虽说公司打着学历要求不高,可任职要求已经完全超出了对学历的要求,所以能提高学历尽力提高学历,提高竞争力。

再来看一下工作经验在机械中的要求

可以看到机械相关职位在招聘时对工作经验的要求占了很大的一部分,这对应届毕业生求职来说可是个好消息。同时看到五年以后的需求没有那么大了,这是招聘公司不需要工作经验久的员工了吗?
猜测
1、对于机械行业来说,公司福利待遇基本上一样,求职者在五六年经验后,基本生活工作稳定,不会再想着跳槽从新开始。
2、现在招聘旺季是给应届毕业生。


虽说民营公司占了大部分,但是能去国企还是尽量去国企。在同等情况下上市公司和有融资的公司都是不错的选择(工资高,福利好),当然在你拿到对应 offer 再说吧。

这里是根据职位描述生成的词云图,由于数据量比较大,这张图的参考价值不是很大,其实是想获取哪些具体的专业技能要求最多,但还是看出绘图软件需求高一些。同时不能忽略软实力的重要,办公软件也是要熟练掌握的。
###总结
综上所述,机械的就业前景还是挺不错的,同时自身实力过硬也是必须的。没事的时候看看招聘网站上的任职要求和自身实力匹配一下,补充一下自身实力,在招聘的时候才能有所进退。

最后点赞是一种态度。

python爬取前程无忧分析一波机械职位信息相关推荐

  1. python爬取前程无忧scrapy存mogondb案例

    一.分析网页 新:python爬取前程无忧scrapy存mogondb案例+可视化 原网页直达 1.比如java字段,可以先拿到全部的el获取java字段的href,然后在逐个访问进入详情页 2.编写 ...

  2. python爬取+BI分析5000条内衣数据,发现妹子最爱这款文胸

    生活中我们经常会用python进行数据爬取,但是爬取简单分析难,很多人喜欢用echarts图表接口或者是python的第三方库进行数据可视化,甚至是用matlab,基本上都需要用代码实现,在数据展示上 ...

  3. python爬取并分析淘宝商品信息

    python爬取并分析淘宝商品信息 背景介绍 一.模拟登陆 二.爬取商品信息 1. 定义相关参数 2. 分析并定义正则 3. 数据爬取 三.简单数据分析 1.导入库 2.中文显示 3.读取数据 4.分 ...

  4. python爬取贝壳找房之北京二手房源信息

    所用库 requests xpath解析库 multiprocessing多进程 pandas库用于保存csv文件 实战背景 本文首发于:python爬取贝壳找房之北京二手房源信息 主要是为了做北京二 ...

  5. 用python爬取3dm上的单机游戏评测信息

    用python爬取3dm上的单机游戏评测信息 参考结果 #爬取3dm上单机游戏评测榜,50页的相关信息import requests from lxml import etree headers={& ...

  6. python爬取前程无忧职位信息

    欢迎关注我的微信公众号:AI进阶者,每天分享技术干货 相信很多小伙伴都面临找工作的问题,本人目前正在魔都读研,也面临明年春招找实习秋招找工作等一系列问题,由于本人的专业为机械专业,结合今年的就业状况( ...

  7. python爬取前程无忧_用python爬取前程无忧网,看看我们是否真的“前程无忧”?...

    The best time to plant a tree was 10 years ago,the second best time is now. 种一棵树最好的时间是十年前,其次是现在. 利用p ...

  8. 用python爬取前程无忧网,看看我们是否真的“前程无忧”?

    作者:旧时晚风拂晓城 公众号:凹凸数据 The best time to plant a tree was 10 years ago,the second best time is now. 种一棵树 ...

  9. python爬取前程无忧当日的全部招聘信息

    用了几天时间写成的爬取前程无忧的当日的招聘信息,通过多线程的方式同时爬取多个城市的信息,作为资料保存下来,一下是完整代码,可以直接复制粘贴爬取 这里爬取的数据条件是是24小时内,周末双休的,会在当前文 ...

最新文章

  1. 技术流 | 手把手教你用Python设计一个命令行界面
  2. maven 编译mybatis项目时xml文件无法编译到target目录下的解决方法
  3. torch torchvision 下载安装与使用
  4. Python LDA主题模型实战
  5. 对服务器系统性能的诊断思路和方法,服务器端软件性能分析和诊断方法研究
  6. cxgrid按条件计算合计值
  7. Knative 健康检查机制分析
  8. SQL 对结果集进行分组排序过滤重复数据 ROW_NUMBER
  9. (48)FPGA面试题sram,falsh memory,及dram的区别
  10. 粤嵌GE6818实现识别触摸坐标的识别
  11. mysql切换二进制日志命令_Mysql二进制日志binlog命令
  12. VSS无法访问的问题
  13. linux培训哪家好?Linux520内部培训教程
  14. Go Anywhere Chair
  15. 小程序-腾讯视频插件
  16. CCF [201703-1] 分蛋糕(C++)
  17. 执念斩长河专栏总目录
  18. eclipse的启动失败提示“发生了错误,请参阅日志文件“
  19. MySQL 工作、底层原理
  20. Kerberos认证原理与环境部署

热门文章

  1. 串口通讯mscomm控件下载
  2. 某×××运营推广策划案
  3. 黑马程序员——iOS开发须知
  4. POJ 3466 带限制的 0 1背包问题
  5. Nmap扫描原理与用法
  6. 天龙八部ol服务器修改密码,客服详解:《新天龙八部》安全中心重要功能调整...
  7. Kafka学习笔记(十)kakfa消费组和重平衡
  8. 使用 VS Code 快速搭建 Golang 开发环境
  9. 税盘托管有哪些好处?
  10. php ems 框架,phpems数据库设计