一个简单拉钩网python爬虫

前期准备

Don't be evil!python

主要就是分析须要抓取的页面,或许会有意外惊喜,直接找到获取数据的接口。git

首选打开拉钩网首页,发现一个职位至少有一个一级分类、二级分类和一个标签。好比须要点击查找Java相关的职位,须要找到技术、后端开发,而后点击Java,才能获取Java相关的职位列表。github

clipboard.png

职位列表就能够获得不少的关于职位的信息了,如职位名称、公司名称、公司logo、所属行政区、商区等信息,可是须要提取这些信息的时候,xpath会让人写的很头疼。mongodb

clipboard.png

若是想这样解析页面获取数据有如下几个问题:json

  1. 职位列表最多只有30页后端

  2. 职位关键信息获取不全cookie

好比一个职位的地点应该属于XX市XX区XX商区XX楼,这种信息只靠解析页面是获取不全的。不过当点击城市的时候,查看发送的网络请求,能够发现一个可喜的接口,这个接口将会返回一个职位列表的json数据。网络

clipboard.png

可是由于为了防止爬虫调用这个接口,使用接口的时候必需要带上cookie。访问首页的时候,会获取部分cookie值,可是惟独没有SEARCH_ID这个值。ide

clipboard.png

可是这个cookie不是平白无辜的产生的,想一想调用这个接口的页面入口,观察response的header,会发现有Set-Cookie:SEARCH_ID=7587e152a3b14eec8bb0f29e774e4094; Version=1; Max-Age=86400; Expires=Sun, 26-Feb-2017 17:16:05 GMT; Path=/工具

clipboard.png

这样前期的准备工做就完成了,能够开始编码了。

开始编码

经过前期分析,能够发现须要作这么几项工做:

  1. 访问首页和职位过滤页面获取cookie

  2. 带上cookie调用接口

具体的流程:

  1. 访问首页,获取全部职位的标签

  2. 按城市调用接口,同时获取全部cookie

  3. 保存数据

因此须要一些工具。

动态加载页面和获取cookie:

带上cookie调用接口:

源码

结果

抓取的总量(已经将数据保存在mongodb中了):

clipboard.png

clipboard.png

相关文章
相关标签/搜索