之前做过一阵子数据爬取的相关工作,现有一个基于Scrapy的智联招聘爬虫demo分享,以供初学者学习之用。
demo链接:https://github.com/xander-ye/recruit_data
下面简单的介绍下
这里有三个主要的文件夹,分别是:
- Database(数据库文件)
- RecruitSpider(爬虫程序)
- Datamining(数据分析统计)
其实爬虫分两种,一种是通用爬虫程序,就像搜索引擎一样,什么都爬,爬取的网站也没有固定格式,基本上也不限制域名;另外一种就是针对特定的网站,比如这里的智联招聘,它的数据具有规范的格式。
关于数据库
爬取特定网站的程序,我一般的流程是先打开要爬取的网站,收集需要爬取的内容,关键字,据此建立数据库。
这里我使用的mysqlWorkbench来生成数据库文件
mysqlWorkbench下载
具体步骤:
打开mysqlWorkbench : File>New Model > Add Diagram
点击新table按钮新建一个表,如下图:
双击表便可在下方添加字段。
创建好之后长这样:
导出数据库文件:
然后就是用这个文件去刷一下mysql就好了。
数据库环节完成。
爬虫程序
网上Scrapy也比较多,中英文的都有,这里贴一个中文的:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html
简洁的梳理下爬取的流程:
在RecruitSpider>spiders>zhilian.py中start_requests方法开始,到parse_job_detail,此时数据item抛给了pipelines.py,在抛给pipelines.py 之前呢,item自身有个对数据处理的过程,这个过程便是在items.py中完成。
在pipelines.py中完成最终数据插入数据库操作。
涉及到的去重参见具体代码吧。
补充:
- 爬虫部署可采用scrapyd
- 与scrapyd配套的有scrapyd-client,封装了scrapyd的API,使得提交爬虫,调度爬虫,停止爬虫方便了许多
- Gerapy是一个管理爬虫的web界面,也是基于scrapyd
数据分析环节
去年年终的时候猛然间发现很多公众号发布了各种领域,各个方面的很多统计报告。这就是一个数据分析的结果。现在我们数据库里面有了几十上百万的招聘数据,我们就可以从各个方面来进行分析,比如各个城市平均薪资,各个城市薪资标准差,各行业招聘数量,工资与学历关系,与工作年限关系,以及具体到某行业不同岗位薪资区别,等等。这些数据能够帮助我们了解一个行业是否兴旺发达,你当前的工资水平在整个同行业同岗位来看处于一个什么样的水平,当前最火热的岗位技术是那些;这些信息了解的越多对于找工作的同学越有利,对于准备换行的同学也是有一个极大的参考价值。
具体分析用到了pandas,可视化使用的是matplotlib,它们具体的教程各位也自行去搜索吧。
推荐下 jupyter notebook,这个工具在数据分析的时候超级方便。
这里象征性的分析了两三个数据,贴在下面: