之前做过一阵子数据爬取的相关工作,现有一个基于Scrapy的智联招聘爬虫demo分享,以供初学者学习之用。

demo链接

项目目录结构:

项目目录结构

下面简单的介绍下

这里有三个主要的文件夹,分别是:

  • Database(数据库文件)
  • RecruitSpider(爬虫程序)
  • Datamining(数据分析统计)

其实爬虫分两种,一种是通用爬虫程序,就像搜索引擎一样,什么都爬,爬取的网站也没有固定格式,基本上也不限制域名;另外一种就是针对特定的网站,比如这里的智联招聘,它的数据具有规范的格式。

关于数据库

爬取特定网站的程序,我一般的流程是先打开要爬取的网站,收集需要爬取的内容,关键字,据此建立数据库。 这里我使用的mysqlWorkbench来生成数据库文件

mysqlWorkbench下载

具体步骤:

打开mysqlWorkbench : File>New Model > Add Diagram

点击新table按钮新建一个表,如下图:

双击表便可在下方添加字段。

创建好之后长这样:

导出数据库文件:

image.png

然后就是用这个文件去刷一下mysql就好了。

数据库环节完成。

爬虫程序

网上Scrapy也比较多,中英文的都有,这里贴一个中文的:Scrapy入门教程

简洁的梳理下爬取的流程:

在RecruitSpider>spiders>zhilian.py中start_requests方法开始,到parse_job_detail,此时数据item抛给了pipelines.py,在抛给pipelines.py 之前呢,item自身有个对数据处理的过程,这个过程便是在items.py中完成。

在pipelines.py中完成最终数据插入数据库操作。

涉及到的去重参见具体代码吧。

数据分析环节

去年年终的时候猛然间发现很多公众号发布了各种领域,各个方面的很多统计报告。这就是一个数据分析的结果。现在我们数据库里面有了几十上百万的招聘数据,我们就可以从各个方面来进行分析,比如各个城市平均薪资,各个城市薪资标准差,各行业招聘数量,工资与学历关系,与工作年限关系,以及具体到某行业不同岗位薪资区别,等等。这些数据能够帮助我们了解一个行业是否兴旺发达,你当前的工资水平在整个同行业同岗位来看处于一个什么样的水平,当前最火热的岗位技术是那些;这些信息了解的越多对于找工作的同学越有利,对于准备换行的同学也是有一个极大的参考价值。

具体分析用到了pandas,可视化使用的是matplotlib,它们具体的教程各位也自行去搜索吧。

推荐下 jupyter notebook,这个在数据分析的时候超级方便。

这里象征性的分析了两三个数据,贴在下面:

各行业招聘人数排名

工资与学历关系

各行业平均薪资