找回密码
 立即注册
搜索
查看: 926|回复: 0

刚“爬”出来的PM能力图鉴

[复制链接]

180

主题

0

回帖

572

积分

管理员

积分
572
发表于 2018-11-3 00:26:34 | 显示全部楼层 |阅读模式


  在写这边文章前,一直苦于思考要写什么内容。作为一个IT从业者,面对行业的快速变化,需要不断的更新自己的知识和专业技能。随着年龄的增长,在日常的工作和生活琐事中,我发现自己可以专门用来充电的时间愈来愈少,偶有闲暇时间,又不一时想不出想要学什么,从哪里学起。那么产品经理究竟需要从哪些方面完善自己的知识呢?我觉得市场数据很有说服力,看看最近行业内对于产品经理岗位的要求都是什么,这些数据可以从市面上常用的求职网站上获取。先写爬虫把产品经理职位的岗位要求和描述数据爬出来,然后数据清理-分词-最后做数据可视化,也可以借此机会练习一下爬虫技术,OK~就这么干吧。
  与防爬机制的博弈

  好久没有写代码了,从F盘找到了我尘封已久的IDE,吹散上面的尘土,准备开始写Python爬虫。“爬虫技术”是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,所以在写之前,先分一下目标网站。“拉钩网”算是互联网求职做的比较好的网站,其发布的职位信息质量也相对较高,所以我选择了“拉钩网”作为我的数据来源。既然要爬取人家的数据,就先要了解一下“拉钩网”的结构,现在大部分网站都做了反爬虫机制,所以需要我们摸清目标网站的结构。

  在IED中新建python项目,pip安装爬虫需要用到的Requests、BeautifulSoup等工具库,直接request搜索结果页的URL... 返回的结果并没有搜索结果内容,应该是拉钩做了异步加载,这也是常见的一种前端技术。异步加载的信息,需要借助Chrome浏览器的开发者工具进行分析。经过对网络请求包的分析发现,了一个“positionAjax.josn”的接口,这应该就是搜索结果列表的接口

  找到了真正的查询结构接口,我在python中试了一下,记过还是返回失败信息:

  看来这个接口还有其他反爬机制,思考了一下爬虫发送的请求与正常浏览器访问的区别后,我意识到可能是需要请求Cookie之类的东西。从浏览器里将Cookie信息加入到爬虫代码中,再试一下,这一次接口返回了正常的数据^_^:

  得到了搜索结果列表数据后,下一步的目标就是列表中的职位详情数据,从职位详情页中取到我们想要的职位描述和岗位要求信息:

  就在我准备下一步开发时,我发现了一个可怕的问题,爬虫返回的职位列表信息与在浏览器正常方位的信息不一致!仔细一看,爬虫取得的数据虽然看起来是正常的但是都是拉钩为了防爬虫伪造的虚假职位信息,拉钩的这一招防爬虫还真是狠,辛辛苦苦一晚上爬到的信息可就全是垃圾信息了。心态崩了~
  已经折腾了几个小时放弃又不甘心,一定是我漏掉了什么,还是能让拉钩把我识别我的爬虫。还是顺着爬虫与浏览器的区别这个思路,经过寻找我发现了请求Header中的这几个字段:


  在python爬虫程序中加入上图的字段后,接口终于返回了真正的搜索列表信息。接下来打开职位详情页面,发现是一个.html的静态页面,URL中的数字,对应的是之前搜索结果列表中的PositionID字段。

  接下来思路就很清晰了,首先使用职位信息搜索接口,将搜索结果列表中的素有PositionID统计出来,然后逐一遍历每一个PositionID获得每一个职位详情也得URL。最后用BeautifulSoup将详情页的职位信息取得保存就可以得到所用职位的描述数据了。最后得到的数据长这个样:

  分词&数据可视化
  数据拿到手后,接下来的就是进行分析和数据可视化了。这方面的pyhton库和工具还是挺多的,我选择了“结巴”中文分词,和“图悦”工具。
  经历了反爬虫的小曲折以及我二把刀的Python水平,最终我还是做出了我想要的图云。在对近1000个职位要求信息进行分析后,按照热词权重得出的词云如下图:

  可以看出“需求”、“数据”、“调研”、“增长”、“敏捷”、“大数据”“敏感”等技能还是行业内对产品经理的核心要求。产品经理可以从上面的热词着手完善自己的产品能力。这次爬虫的小常识也是对通过技术手段收集、分析数据的一次尝试,工作也可以尝试利用类似技术来帮助我们分析问题。
  爬虫源码:https://github.com/2mucht/spider/tree/master/spider
  彩蛋
  顺手也做了个“UI设计师“的词云,拿走拿走别客气~



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表