一个简单拉钩网python爬虫

前期准备

Don’t be evil!

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

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

《一个简单拉钩网python爬虫》

职位列表就可以得到很多的关于职位的信息了,如职位名称、公司名称、公司logo、所属行政区、商区等信息,但是需要提取这些信息的时候,xpath会让人写的很头疼。

《一个简单拉钩网python爬虫》

如果想这样解析页面获取数据有以下几个问题:

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

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

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

《一个简单拉钩网python爬虫》

但是因为为了防止爬虫调用这个接口,使用接口的时候必须要带上cookie。访问首页的时候,会获取部分cookie值,但是唯独没有SEARCH_ID这个值。

《一个简单拉钩网python爬虫》

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

《一个简单拉钩网python爬虫》

这样前期的准备工作就完成了,可以开始编码了。

开始编码

通过前期分析,可以发现需要做这么几项工作:

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

  2. 带上cookie调用接口

具体的流程:

  1. 访问首页,获取所有职位的标签

  2. 按城市调用接口,同时获取所有cookie

  3. 保存数据

所以需要一些工具。

动态加载页面和获取cookie:

带上cookie调用接口:

源码

结果

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

《一个简单拉钩网python爬虫》

《一个简单拉钩网python爬虫》

    原文作者:孤独的自我
    原文地址: https://segmentfault.com/a/1190000008486423
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞