Python学而时习之

爬取拉钩网入库MongoDB

2019-08-22  本文已影响0人  途途途途

职场上那种技能最吃香呢?面试时那种技能可以使你顺利进入阿里,腾讯这样的大厂呢?今天跟我去一探究竟。

首先我们进入拉勾网

在搜索框中输入'Python'我们首先来搜索一下Python相关的职位

爬取拉钩网入库MongoDB

首先F12开打开发者模式,然后在Network点击XHR找到浏览器中与开发者模式种对应的消息

爬取拉钩网入库MongoDB

找到对应的信息之后然后在Headers中找到我们所要爬取信息的网站的地址

爬取拉钩网入库MongoDB

在这里我们可以发现浏览器的访问方式是post

爬取拉钩网入库MongoDB

post携带的参数如下

爬取拉钩网入库MongoDB

针对于post请求,我们首先来做一个简单的了解

爬取拉钩网入库MongoDB

可以发现,post请求相对于get请求多了一个payload的参数。里面的值是来自于Form Data里面的。

找到规律之后帮我们就开始编码

爬取拉钩网入库MongoDB

编码完成之后test发现如下异常

爬取拉钩网入库MongoDB

出现此错误的原因基本上是网站采取了反扒措施, 解决方法是加入以下几个参数用来模拟浏览器的访问。

爬取拉钩网入库MongoDB

首先我们在Request headers 中找到cookie,UserAgent和Refer并将它们粘贴到代码里面request请求中的headers参数中

爬取拉钩网入库MongoDB

可以看到,加入了Cookie、UserAgent和Refer之后我们要爬取的数据就可以显示出来了。

爬取拉钩网入库MongoDB

然后我们找到职位result与它父级之间的关系

爬取拉钩网入库MongoDB

然后通过代码展示

爬取拉钩网入库MongoDB

然后我们将得到的数据存入MongoDB数据库。在这里多说两句关于MongoDB数据库的。

MongoDB 是非关系型数据库(NoSQL)的代表之一,它具有高灵活、可水平扩展、高可用等优秀特性,并且它提供了强大又丰富的查询语句使开发者能够随心所欲地操控数据。这些也正是它受到广大开发者和企业青睐的原因。

爬取拉钩网入库MongoDB

关于NoSQL在多说两句

NoSQL 泛指非关系型数据库,该词是关系型数据库(即 SQL)的相对称呼。我们常用的关系型数据库无法满足 WEB2.0 时代的需求,在实际应用中暴露了很多难以克服的问题。

爬取拉钩网入库MongoDB

NoSQL 的产生就是为了解决例如海量数据的存储、弹性可伸缩和灵活性等方面的挑战。

还有关于MongoDB的详细安装教程我已经放到了公众号‘神秘程序员007’,大家直接在公众号里回复'MongoDB'获取软件和详细安装教程。

爬取拉钩网入库MongoDB

然后我们将爬取到的数据放入到MongoDB数据库中。点击F4-view。

爬取拉钩网入库MongoDB

可以看到我们已经获取到了当前页面的所有数据。大家我们的目标不止于此,我们要获取的是所有Python相关的职业。

所以现在的核心就是如何爬取多页数据。

首先通过开发者模式来查看浏览器

爬取拉钩网入库MongoDB

对比可以发现,当我们点击第二页的时候,它的 pn = 2;

当我们点击第四页的时候,它的 pn = 4;

不难得出以下结论:pn控制的就是它的当前页数。所以我们将这个pn定义为一个变量参与到页数的循环中去,这样就可以爬取任意我们想要的页面的数据

爬取拉钩网入库MongoDB

然后查看我们的数据库中是否写入了数据

爬取拉钩网入库MongoDB

在这里基本上已经写完了,但是这个只是咱们搜索的满足'python'职位的请求,如果想搜索其他的职位呢?

我么会首先对浏览器的开发者模式进行研究,发现如果用户输入的'python',这里的kd = ‘python’,如果是'PHP',这里显示的就是'PHP'。据此我们可以断定。kd就是控制用户职位的搜索的。

爬取拉钩网入库MongoDB

这里我们只需对代码做简单的改动,如图

爬取拉钩网入库MongoDB

然后进入数据库中查看是否获取到'PHP'职位相关的信息。

爬取拉钩网入库MongoDB

好了,大功告成!

源码和相关资源我已上传至微信公众号 '神秘程序员007',希望大家不断拥抱新的技术和变化,提升自己的核心技能,增强自身的不可替代性。一起拥抱高薪,不负2020!

上一篇 下一篇

猜你喜欢

热点阅读