天天看点

[jjzhu学python]之使用python抓取拉勾网职位信息并做简单统计分析

一直对python感兴趣,最近想玩玩爬虫,抓拉钩互联网职位招聘信息,然后做点统计什么的,废话不多说,开打开打。

运行环境:

1、win7 32bit

2、pycharm 4.0.4

3、python 3.4

4、google chrome

需要的插件

要抓一个网站的数据,当然要分析这个网站的网页代码是怎么写的,也就是你要的信息数据放在什么位置。

打开拉钩首页,按f12进入网页调试模式,可以发现拉钩把所有的职位都放在了id=sidebar标签下,每个职位都放在<a></a>标签下,所以很容易的就取到了所有职位

其实,可以看拉钩页面的源码,显示比较单一,然后看它的前端页面源码,可以看到,就是用了一个模板,然后发请求,根据返回的数据填入其中就可以了,你可以随意点一个职位链接,在看它的network,看加载页面的那个请求,发现了什么?

[jjzhu学python]之使用python抓取拉勾网职位信息并做简单统计分析

它就是用了一个positionajax.json?city=*****的post请求,然后根据返回数据显示的

[jjzhu学python]之使用python抓取拉勾网职位信息并做简单统计分析

这说明什么?说明你要他的职位数据,你只要发请求,然后对上面返回的json数据提取就可以了!!不需要处理它的页面!

分析它不同职位的请求,你就会发现,它所需要的参数就是一个当前城市city,当前页号pn,和职位种类kd

[jjzhu学python]之使用python抓取拉勾网职位信息并做简单统计分析

所以,只要获取到它所有的城市,所有的职位,然后依次发请求,就可以轻松的获取它所有的招聘信息了.....上面已经获取了所有职位,现在获取所有城市

[jjzhu学python]之使用python抓取拉勾网职位信息并做简单统计分析

提取代码

现在有了所有职位分类和所有城市,接下来的任务就是发请求,获取数据了。一开始是用单线程的.....速度可想而知,所以,用各多线程速度会明显提升很多。

python的多线程使用比较简单,需要引入threading.thread 和 queue(队列)

开启多线程

处理函数working()

抓取函数,也就是发请求函数grab()

当然,还得给他们分配任务,接下来就是把所有任务都放在队列中了,根据当前城市和当前职位来创建请求任务

主要的工作都差不多完成了,现在就运行它抓数据去吧

上面给的都是代码片段,可能有些辅助方法没贴出来,这里就把所有的代码都放上来吧。

lagoucrawler类:

mysql  connection类:

未完待续....后面统计的之后在写,现在还没做....