资讯专栏INFORMATION COLUMN

区块链招聘信息爬取与分析

kelvinlee / 2930人阅读

摘要:最近在研究区块链,闲来无事抓取了拉勾网上条区块链相关的招聘信息。拉勾网的反爬虫做的还是比较好的,毕竟自己也知道这种做招聘信息聚合的网站很容易被爬,而且比起妹子图这种网站,开发的技术水平应该高不少。

最近在研究区块链,闲来无事抓取了拉勾网上450条区块链相关的招聘信息。过程及结果如下。

拉勾网爬取

首先是从拉勾网爬取数据,用的requests库。拉勾网的反爬虫做的还是比较好的,毕竟自己也知道这种做招聘信息聚合的网站很容易被爬,而且比起妹子图这种网站,开发的技术水平应该高不少。
一开始爬取几个数据后就会跳转到登陆页面,当时采用的应对策略是:当跳转到登陆页面的时候,就挂起20s,再重新请求一次,发现一般挂起一段时间之后就又可以访问了。这样的问题是比较慢,450条信息花了几十分钟。

后来,我天真地认为:只要登陆了就可以不用挂起等待这么久。于是,添加了模拟登陆地逻辑,主要参考地这篇文章:python -- 拉勾网爬虫模拟登录 - CSDN博客。拉勾网对密码做了两次md5加密,并会下发动态地Token口令,防止低级地伪造请求,需要仔细分析登陆界面加载的JS文件才能成功登陆,拿到Cookie。想起当年模拟登陆教务处,学号密码都是明文传输,我直接用F12工具能看到。。。成功拿到Cookie后发现,访问过快时又会跳转到首页,并弹出一个“切换城市”的悬浮窗,更准确地说是我的请求被重定向了。

为什么重定向,因为后台能够通过访问频率很容易发现我的请求是爬虫,所以重定向,普通用户可以点击取消悬浮窗,由于requests不支持JS运行,所以我就GG了,只能像前面那样挂起一段时间再请求。这样一来,模拟登陆就没有意义了。
针对这种情况,我认为有两种解决办法,一种是使用IP池和多线程,不断变换请求的IP就不会被发现了。另外一种就是用无头浏览器。个人感觉两种都是可行的,下次有需求了再实践一下。

爬取结果分析

将爬取的网页提取信息,本着可视化原则,用mathplotlib做些图。其中遇到的主要问题是mathplotlib的中文支持,试了网上很多方法都失败了,这里要把自己亲测可行的方法记录下来:

from matplotlib import rcParams
import matplotlib.font_manager as fm

zhfont = matplotlib.font_manager.FontProperties(fname="../test.ttf")
font_list = fm.createFontList(fm.findSystemFonts(["/home/zhaoyu/Project/BlockChainAnalysis/font", ]))
fm.fontManager.ttflist.extend(font_list)
matplotlib.rcParams["font.family"] = "WenQuanYi Micro Hei"

主要结果如下:
公司规模,小公司居多:

城市分布,北上深最多:

发展阶段:

薪资分布:

(感觉这样表示不是很直观,自己划定几个区间,做一个柱状图可能更好)

最后还用jiebatextrank4zh做了关键词提取,但由于手法粗糙加上噪音严重(产品经理、技术开发等等的招聘需求应该分类处理),效果好像不是很理想:

Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.854 seconds.
Prefix dict has been built succesfully.
关键词:
技术 0.010791270870042516
区块 0.008745674154277546
相关 0.00844148459795554
工作 0.008368189087078589
开发 0.007315529659791802
熟悉 0.006915993478846666
产品 0.0066154024633222315
能力 0.00606941754659388
项目 0.005688665635431383
经验 0.005609155675707272
公司 0.005484150951833748
优先 0.005273082641983991
团队 0.004833977171492051
行业 0.004666562221685026
设计 0.004646942513692475
系统 0.004561171667742128
进行 0.004504888034867325
研究 0.004431023464429216
业务 0.00431705965334352
负责 0.004180396829264431
发现的不足

按照之前的计划,个人能力的构建应该分为两部分,一部分是工具库的积累,一部分是底层原理的掌握。目前来看,两方面做的都不是很好。beautifulsoupmathplotlib都很不熟练,遇到反爬虫不能快速解决,拿到数据也不能很好的可视化出来。

平时没有意识去建立个人知识体系,比如常见的反爬虫与绕过方法,数据挖掘(拿到了爬取的数据该怎么办),数据可视化(怎么直观地表示数据)。

写代码不能得心应手,比如对容器地某个操作怎么最优雅,自己目前的水平就是遇到问题百度一下,找个可行地方案就套用上去,离自己理想的状态差太远了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24050.html

相关文章

  • 【php爬虫】百万级别知乎用户数据取与分析

    摘要:本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问。经过查阅资料得知,是因为知乎对图片做了防盗链处理。最终的结果是,用了一个周末就抓取了万的用户数据。 代码托管地址:https://github.com/hoohack/zhihuSpider 这次抓取了110万的用户数据,数据分析结果如下:showImg(https://segmentfault.com/img...

    maxmin 评论0 收藏0
  • node.js 爬取招聘信息分析各职业钱途(爬虫+动态IP代理+数据可视化分析

    摘要:成功爬取了拉钩网上多个招聘岗位的具体信息后,数据可视化并得出分析结果如下从整体看,北上广深杭这五个城市前端工程师招聘岗位,北京是遥遥领先,是深圳的两倍,是广州的三倍,其次到上海,深圳,杭州,广州居末。 前前言 本文首发于 github blog 不想看爬虫过程只想看职位钱途数据分析请看这里:前端招聘岗位分析C++招聘岗位分析JAVA招聘岗位分析PHP招聘岗位分析Python招聘岗位分析...

    546669204 评论0 收藏0
  • Go语言的前景分析

    摘要:觉得好的话,顺手分享到朋友圈吧,感谢支持。抓住时代的趋势在上篇文章中,也就是那个跨维度的打击,是可以直接秒杀的中,提到这个时代的问题,这次针对语言的前景分析,其实我也想讲一下时代的问题。目前语言就处于这样一个不错的时代中。 本文为原创文章,转载注明出处,asdfasdfasdf 欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后...

    denson 评论0 收藏0
  • Go语言的前景分析

    摘要:觉得好的话,顺手分享到朋友圈吧,感谢支持。抓住时代的趋势在上篇文章中,也就是那个跨维度的打击,是可以直接秒杀的中,提到这个时代的问题,这次针对语言的前景分析,其实我也想讲一下时代的问题。目前语言就处于这样一个不错的时代中。 本文为原创文章,转载注明出处,asdfasdfasdf 欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后...

    stefanieliang 评论0 收藏0
  • Go语言的前景分析

    摘要:觉得好的话,顺手分享到朋友圈吧,感谢支持。抓住时代的趋势在上篇文章中,也就是那个跨维度的打击,是可以直接秒杀的中,提到这个时代的问题,这次针对语言的前景分析,其实我也想讲一下时代的问题。目前语言就处于这样一个不错的时代中。 本文为原创文章,转载注明出处,asdfasdfasdf 欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后...

    desdik 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<