更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer/column
作者:nnngu
源代码:https://github.com/nnngu/LagouSpider
效果预览
思路
1、首先我们打开拉勾网,并搜索“java”,显示出来的职位信息就是我们的目标。
2、接下来我们需要确定,怎样将信息提取出来。
查看网页源代码,这时候发现,网页源代码里面找不到职位相关信息,这证明拉勾网关于职位的信息是异步加载的,这也是一种很常用的技术。
异步加载的信息,我们需要借助 chrome 浏览器的开发者工具进行分析,打开开发者工具的方法如下:
点击Nerwork进入网络分析界面,这时候是一片空白,刷新一下界面就可以看到一系列的网络请求了。
前面我们说到,拉勾网关于职位的信息是异步加载的,那么在这一系列的网络请求中,必定有某个请求发送给服务器,响应回来的是职位信息。
正常情况下,我们可以忽略css,图片等类型的请求,关注点放在XHR这种类型请求上,如图:
一共4个XHR类型的请求,我们逐个打开对比,分别点击Preview就能看到它们响应的内容。
发现第一个请求就是我们要找的。如图:
点击Headers,查看一下请求参数。如下图:
到此,我们可以确定city参数就是城市,pn参数就是页数,kd参数就是搜索关键字。
接下来开始写代码了。
代码
代码分成四个部分,便于后期维护。
1、基本 https 请求https.py
这部分对 requests 包进行了一些封装,部分代码如下:
这里只展示了一部分代码,完整代码已上传到Github
2、代码主逻辑部分main.py
这部分的程序逻辑,如下:
获取职位信息
3、信息解析部分
parse.py
这部分针对服务器返回的职位信息的特点,进行解析,如下:
这里只展示了一部分代码,完整代码已上传到Github
4、配置部分setting.py
这部分加入 cookies 的原因是为了应对拉勾网的反爬,长期使用需要进行改进,进行动态 cookies 获取
测试
运行结果:
爬取结束后,在src目录下就可以看到爬虫爬取到的数据。
到此,拉勾网的职位信息抓取就完成了。完整代码已经上传到我的Github
领取专属 10元无门槛券
私享最新 技术干货