最近开始学习Nodejs,学习嘛,要学以致用,看到cheerio 这个库,就打算写个爬虫,试一下。于是瞄准了拉钩。
学习过程如下:
- 首先我先模拟请求了拉钩NodeJs的职位列表。 发现返回的HTML 并没有职位信息,于是没用使用到cheerio来提取数据。
- chrome 打开了职位列表,在NetWork 中发现职位信息是AJAX 请求接口返回的,可以看到请求参数 在浏览器使用Get请求该接口发现可以正常返回数据。
- 于是使用superagent请求Ajax请求的接口地址,发现可以返回数据,并没有接口请求次数的限制。
发现了坑,该接口不管pn 传多少 返回的结果中pageNo和currentPageNo都为1
- 获取到数据后,需要存储,考虑过本地文件或者数据库,最后选择了数据库,在Mysql和MongoDB中选择,最后选择了不怎么熟悉MongoDB,顺便练习使用了比较常见的Orm–Mongooes
- 获得到数据后,需要展现数据,于是用Express 写了Web项目来展示数据。 用到了Echarts 来做可视化。 主要分析了,根据工作年限统计职位数,根据工作年限算出薪资的最小、最大、平均值, 按薪资排序职位,和我之前收藏的一些简历方面的知识。
展示一下NodeJs在北京的职位情况:
先抓取数据, 职位数: 占比例最大的两个工作年限为: 1~3年 64个职位占了47.41% 3~5年 43个职位占了31.85% 薪资方面如下: 1~3年和3~5年工资相差不多, 平均工资1~3年为:11.53, 平均工资3~5年为:14.84, 平均工资5~10年最多为:21.25, 土豪公司列表(部分):
学习到了什么: Nodejs 基础,mongoose使用,Express使用,Echarts使用等等。
还有什么不足:改进异步调用,学习promise等
大哥,给个链接看看!!!
@alsotang 大神~ 我放了github 的链接 https://github.com/LiZhenNet/GetJobsFromLagou
@LiZhenNet 你这个东西抓下来之后,不是可以做成一个网页的形式放出来大家看看吗?
process.nextTick(function() { throw err; }); ^
TypeError: Cannot read property ‘forEach’ of undefined at GetJobsFromLagou-master\Lagou\routes\api.js:10:13
@alsotang 是的( ⊙ o ⊙ )
@alsotang 都做成ECharts可视化了,竟然不给看一下~~
@LiZhenNet 你多展示一些这回找工作爬回来的数据嘛,要是内容不错的话,我们加个精华让大家都来参考参考
@alsotang 加了些数据, 是北京Nodejs的
可以可以, 当做跳槽参考了
不错不错~
直接整个在线的哇
@yuu2lee4 随便联系着写写的~