2021.05.04
用猎聘网的职位数据统计了下“架构师”这一职位的技能要求,以便有的放矢得准备。
用到工具:shell命令、python词云工具。
过程简述如下:
- 访问猎聘网搜索“架构师”,城市选择“北京”。
- 拷贝访问的url,用curl命令查询前十页,并保存,示例:
curl -o p2.html -b c1.txt https://www.liepin.com/zhaopin/\?industries\=\&subIndustry\=\&dqs\=010\&salary\=40%2470\&jobKind\=\&pubTime\=\&compkind\=\&compscale\=\&searchType\=1\&isAnalysis\=\&sortFlag\=15\&d_headId\=60f3a84dbbe15129261a499407525893\&d_ckId\=60f3a84dbbe15129261a499407525893\&d_sfrom\=search_prime\&d_curPage\=0\&d_pageSize\=40\&siTag\=zot2zXE3mIYq_uF1ofAiig%7Eckeqc2v6cyjIpiFd1ebiLg\&key\=%E6%9E%B6%E6%9E%84%E5%B8%88\&curPage\=1
上述命令查询第一页,并保存为p2.html,其他页修改最后的curPage即可。
- 从列表页的html中查到每个职位的url,示例:
grep 'https://www.liepin.com/job/' p2.html > d2
- d2中的数据类似:
<a href="https://www.liepin.com/job/1923776887.shtml" data-promid="imscid=R000000075&siTag=RkdwXGWlO3dWhkSuLDDI2A%7Eckeqc2v6cyjIpiFd1ebiLg&d_sfrom=search_prime&d_ckId=498ab9eedd402a04646105aa394b5795&d_curPage=1&d_pageSize=40&d_headId=498ab9eedd402a04646105aa394b5795&d_posi=49" target="_blank"
<a href="https://www.liepin.com/job/1923217241.shtml" data-promid="imscid=R000000075&siTag=RkdwXGWlO3dWhkSuLDDI2A%7Eckeqc2v6cyjIpiFd1ebiLg&d_sfrom=search_prime&d_ckId=498ab9eedd402a04646105aa394b5795&d_curPage=1&d_pageSize=40&d_headId=498ab9eedd402a04646105aa394b5795&d_posi=50" target="_blank"
<a href="https://www.liepin.com/job/1920276417.shtml" data-promid="imscid=R000000075&siTag=RkdwXGWlO3dWhkSuLDDI2A%7Eckeqc2v6cyjIpiFd1ebiLg&d_sfrom=search_prime&d_ckId=498ab9eedd402a04646105aa394b5795&d_curPage=1&d_pageSize=40&d_headId=498ab9eedd402a04646105aa394b5795&d_posi=51" target="_blank"
<a href="https://www.liepin.com/job/1919123815.shtml" data-promid="imscid=R000000075&siTag=RkdwXGWlO3dWhkSuLDDI2A%7Eckeqc2v6cyjIpiFd1ebiLg&d_sfrom=search_prime&d_ckId=498ab9eedd402a04646105aa394b5795&d_curPage=1&d_pageSize=40&d_headId=498ab9eedd402a04646105aa394b5795&d_posi=52" target="_blank"
- 截取、提纯数据
cat d2 | awk '{print $2}' | awk -F\" '{print $2}' >> out.2
得到文本文件,每行是一个职位信息的url。
有些url是相对路径,需要自行拼接前缀,操作方式如下:
cat d$i | awk '{print $2}' | awk -F\" '{pre="https://www.liepin.com"; printf pre;print $2}' > out.$I
上述命令为脚本中的循环。
- 至此得到很多职位详细页面的url。
- 用curl命令下载这些页面
指定user-agent和referer,依次下载上述url的html页面。
形如:
curl --referer "https://www.liepin.com/zhaopin/" --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36" -o data/$file $j
sleep $(($RANDOM%10))
需要随机sleep一会儿,否则容易被判定成机器人抓取页面,被屏蔽掉。
- 从详细信息页面中找到需要的部分,这里关注的是职业技能,查看html代码发现对应content-word关键字,提取如下:
grep -A 1 'content content-word' ./data/$i | grep -E '技术|经验|architectural' > ./req/$I
一开始没仔细分析结构,按内容提取的:
grep -E '>要求|任职要求|岗位要求|职位要求|工作要求' ./data/$i | awk -F "要求" '{printf $2}' | awk -F "span" '{printf $1}' > ./req/$I
总有些不规范的,手动检查一下空文件或过小的文件,修改提取方式即可。
- 此时职位的技能要求都放到req目录下了,将内容合并:
cat req/* > result
- 使用词云工具做分词、词频统计,生成图片云。
用了之前网上找到的一个word cloud工具,略作修改,添加要屏蔽的词,调整top词数量,最终统计出top 400(😄top10的词太抽象,扩到400了),词如下:
[('开发', 400), ('架构', 393), ('设计', 342), ('数据', 335), ('系统', 292), ('产品', 273), ('项目', 251), ('业务', 239), ('团队', 235), ('云', 218), ('架构设计', 205), ('应用', 205), ('框架', 199), ('沟通', 192), ('平台', 179), ('服务', 174), ('客户', 171), ('大', 160), ('行业', 159), ('需求', 142), ('负责', 136), ('数据库', 134), ('领域', 133), ('使用', 131), ('高', 130), ('学习', 130), ('分布式', 128), ('专业', 127), ('优化', 126), ('分析', 126), ('主流', 120), ('管理', 119), ('互联网', 117), ('研发', 117), ('Java', 117), ('本科', 116), ('计算', 111), ('解决方案', 110), ('大型', 109), ('规划', 105), ('计算机', 100), ('方案', 94), ('深入', 85), ('落地', 83), ('公司', 83), ('掌握', 81), ('编程', 80), ('运维', 80), ('代码', 79), ('新', 79), ('基础', 78), ('原理', 75), ('实施', 75), ('语言', 73), ('参与', 72), ('丰富', 72), ('问题', 72), ('扎实', 71), ('以及', 70), ('微', 69), ('网络', 67), ('精神', 67), ('场景', 67), ('合作', 66), ('流程', 66), ('独立', 65), ('熟练掌握', 65), ('Spring', 64), ('过', 64), ('开源', 64), ('并发', 63), ('算法', 62), ('编写', 62), ('交付', 61), ('协作', 60), ('完成', 60), ('解决', 60), ('性能', 60), ('工具', 60), ('知识', 57), ('建设', 57), ('软件', 57), ('较强', 56), ('体系', 55), ('企业', 55), ('常用', 54), ('包括', 53), ('核心', 53), ('测试', 53), ('l', 53), ('安全', 53), ('计算机相关', 52), ('可用', 52), ('实际', 51), ('实现', 51), ('设计模式', 51), ('Redis', 51), ('善于', 50), ('方向', 50), ('发展', 49), ('持续', 49), ('Hadoop', 49), ('文档', 49), ('Linux', 48), ('方法', 47), ('调优', 46), ('责任心', 46), ('分布式系统', 45), ('虚拟化', 45), ('背景', 45), ('SQL', 45), ('政府', 45), ('提供', 45), ('IT', 44), ('清晰', 44), ('模型', 43), ('Spark', 43), ('.', 43), ('实践经验', 41), ('组件', 41), ('容器', 41), ('存储', 41), ('数据结构', 40), ('9', 40), ('Python', 40), ('考虑', 40), ('统招', 39), ('中间件', 39), ('部署', 39), ('基于', 39), ('任职', 39), ('缓存', 38), ('意识', 38), ('可', 38), ('提升', 38), ('整体', 37), ('好', 37), ('MySQL', 36), ('建模', 36), ('用户', 36), ('常见', 36), ('方面', 35), ('深度', 35), ('研究', 35), ('自动化', 35), ('软件工程', 35), ('解决问题', 35), ('表达能力', 35), ('各类', 35), ('结合', 34), ('高性能', 34), ('10', 33), ('质量', 33), ('处理', 33), ('资格', 33), ('认证', 33), ('供应链', 33), ('专业本科', 32), ('要求', 32), ('智慧', 32), ('咨询', 32), ('数据仓库', 32), ('支持', 32), ('智能', 32), ('架构师', 31), ('工程', 31), ('集成', 31), ('协调', 31), ('快速', 31), ('型', 31), ('机制', 30), ('根据', 30), ('编码', 30), ('组织', 30), ('C++', 30), ('关系', 30), ('配置', 30), ('in', 30), ('to', 30), ('前端', 29), ('业界', 29), ('规范', 29), ('关键', 29), ('抗压', 29), ('岗位职责', 29), ('消息', 28), ('理论', 28), ('治理', 28), ('模式', 28), ('机器', 28), ('监控', 28), ('指导', 28), ('DevOps', 28), ('the', 28), ('多线程', 27), ('推动', 27), ('Kafka', 27), ('联网', 27), ('目标', 27), ('Docker', 27), ('MongoDB', 27), ('java', 26), ('主导', 26), ('到', 26), ('复杂', 26), ('金融', 26), ('逻辑', 26), ('链', 26), ('岗位', 26), ('端', 25), ('操作系统', 25), ('经历', 25), ('过程', 25), ('数字化', 25), ('出差', 25), ('Oracle', 25), ('售前', 25), ('Hive', 25), ('创新', 25), ('各种', 24), ('软件架构', 24), ('C', 24), ('工业', 24), ('Kubernetes', 24), ('构建', 23), ('类', 23), ('逻辑思维', 23), ('压力', 23), ('调研', 23), ('完整', 23), ('运营', 23), ('热情', 22), ('大规模', 22), ('从', 22), ('选型', 22), ('思考', 22), ('制定', 22), ('环境', 22), ('思维', 22), ('JVM', 22), ('物', 22), ('深刻理解', 22), ('其', 22), ('其中', 22), ('信息化', 22), ('其他', 22), ('区块', 22), ('实战经验', 22), ('负载', 22), ('典型', 22), ('强烈', 21), ('标准', 21), ('成功', 21), ('数据处理', 21), ('思想', 21), ('模块', 21), ('项目管理', 21), ('挑战', 21), ('职责', 21), ('Cloud', 21), ('挖掘', 21), ('有效', 20), ('编程语言', 20), ('驱动', 20), ('稳定性', 20), ('服务器', 20), ('表达', 20), ('深刻', 20), ('协同', 20), ('design', 20), ('公有', 19), ('理念', 19), ('基本', 19), ('内部', 19), ('上', 19), ('物流', 19), ('软件开发', 19), ('迭代', 19), ('Dubbo', 19), ('市场', 19), ('之一', 19), ('技巧', 19), ('development', 19), ('\', 19), ('自我', 18), ('多个', 18), ('多', 18), ('承担', 18), ('适应', 18), ('方法论', 18), ('以', 18), ('从业', 18), ('通过', 18), ('AI', 18), ('各', 18), ('a', 18), ('知名', 17), ('方案设计', 17), ('合理', 17), ('海量', 17), ('带领', 17), ('输出', 17), ('社区', 17), ('拥有', 17), ('城市', 17), ('维护', 17), ('队列', 17), ('高度', 17), ('有过', 17), ('接受', 17), ('决策', 17), ('提出', 17), ('功底', 17), ('执行力', 17), ('推进', 17), ('基础设施', 17), ('阿里', 17), ('一起', 17), ('of', 17), ('on', 17), ('mysql', 17), ('均衡', 17), ('JAVA', 16), ('例如', 16), ('全面', 16), ('效率', 16), ('汽车', 16), ('政务', 16), ('NoSQL', 16), ('Go', 16), ('引擎', 16), ('生产', 16), ('协助', 16), ('痛点', 16), ('前瞻性', 16), ('功能', 16), ('搭建', 16), ('集群', 16), ('·', 16), ('生态', 16), ('承受', 16), ('限于', 16), ('HBase', 16), ('战略', 16), ('美团', 16), ('部门', 16), ('数据分析', 16), ('敏捷', 16), ('可以', 15), ('硕士', 15), ('智能网', 15), ('支撑', 15), ('可视化', 15), ('地', 15), ('改进', 15), ('迁移', 15), ('电子', 15), ('实践', 15), ('级', 15), ('价值', 15), ('SpringCloud', 15), ('交流', 15), ('你', 15), ('AWS', 15), ('电商', 15), ('technical', 15), ('Openstack', 15), ('描述', 15), ('技能', 14), ('Mysql', 14), ('积极主动', 14), ('定位', 14), ('探索', 14), ('总结', 14), ('计划', 14), ('实时', 14), ('特点', 14), ('OpenStack', 14), ('个', 14), ('毕业', 14), ('\u3000', 14), ('引导', 14), ('ETL', 14), ('SpringBoot', 14), ('加', 13), ('消息中间件', 13), ('很', 13), ('主要', 13), ('移动', 13), ('基础知识', 13), ('Web', 13), ('面向对象', 13), ('原生', 13), ('联', 13), ('评估', 13), ('计算技术', 13), ('PaaS', 13), ('全日制', 13), ('确保', 13), ('发展趋势', 13)]。
图片如下: