爬拉勾?你比别人少知道的就这一点点

职场上那种技能最吃香呢?面试时那种技能可以使你顺利进入大厂呢?拥有哪种技能可以使你升职加薪呢?今天跟我去一探究竟。
首先我们进入拉勾网

>>>拉勾网

在搜索框中输入’Python’我们首先来搜索一下Python相关的职位
在这里插入图片描述
首先F12开打开发者模式,然后在Network点击XHR找到浏览器中与开发者模式种对应的消息
在这里插入图片描述
找到对应的信息之后然后在Headers中找到我们所要爬取信息的网站的地址
在这里插入图片描述
在这里我们可以发现浏览器的访问方式是post
在这里插入图片描述
post携带的参数如下
在这里插入图片描述
针对于post请求,我们首先来做一个简单的了解

>>>快速上手 - Requests 2.18.1 文档

首先我们打开文档链接,ctrl+F搜索POST,然后找到post请求的用法
在这里插入图片描述
可以发现,post请求相对于get请求多了一个payload的参数。里面的值是来自于Form Data里面的。
找到规律之后帮我们就开始编码
在这里插入图片描述
编码完成之后test发现如下异常
在这里插入图片描述
出现此错误的原因基本上是网站采取了反扒措施, 解决方法是加入以下几个参数用来模拟浏览器的访问。
在这里插入图片描述
首先我们在Request headers 中找到cookie,UserAgent和Refer并将它们粘贴到代码里面request请求中的headers参数中。
在这里插入图片描述
可以看到,加入了Cookie、UserAgent和Refer之后我们要爬取的数据就可以显示出来了。
在这里插入图片描述
然后我们找到职位result与它父级之间的关系
在这里插入图片描述
然后通过代码展示
在这里插入图片描述
然后我们将得到的数据存入MongoDB数据库。在这里多说两句关于MongoDB数据库的。
MongoDB 是非关系型数据库(NoSQL)的代表之一,它具有高灵活、可水平扩展、高可用等优秀特性,并且它提供了强大又丰富的查询语句使开发者能够随心所欲地操控数据。这些也正是它受到广大开发者和企业青睐的原因。有兴趣的小伙伴可以点击下面链接去了解一下MongoDb

The most popular database for modern apps

关于NoSQL在多说两句
NoSQL 泛指非关系型数据库,该词是关系型数据库(即 SQL)的相对称呼。我们常用的关系型数据库无法满足 WEB2.0 时代的需求,在实际应用中暴露了很多难以克服的问题。NoSQL 的产生就是为了解决例如海量数据的存储、弹性可伸缩和灵活性等方面的挑战。
还有关于MongoDB的详细安装教程我已经放到了公众号‘神秘程序员007’,大家直接在公众号里回复’MongoDB’获取软件和详细安装教程。
在这里插入图片描述
然后我们将爬取到的数据放入到MongoDB数据库中。点击F4-view。
在这里插入图片描述
可以看到我们已经获取到了当前页面的所有数据。大家我们的目标不止于此,我们要获取的是所有Python相关的职业。
所以现在的核心就是如何爬取多页数据。
首先通过开发者模式来查看浏览器
在这里插入图片描述
对比可以发现,当我们点击第二页的时候,它的 pn = 2;
当我们点击第四页的时候,它的 pn = 4;
不难得出以下结论:pn控制的就是它的当前页数。所以我们将这个pn定义为一个变量参与到页数的循环中去,这样就可以爬取任意我们想要的页面的数据
在这里插入图片描述
然后查看我们的数据库中是否写入了数据
在这里插入图片描述
在这里基本上已经写完了,但是这个只是咱们搜索的满足’python’职位的请求,如果想搜索其他的职位呢?
我么会首先对浏览器的开发者模式进行研究,发现如果用户输入的’python’,这里的kd = ‘python’,如果是’PHP’,这里显示的就是’PHP’。据此我们可以断定。kd就是控制用户职位的搜索的。
在这里插入图片描述
这里我们只需对代码做简单的改动,如图
在这里插入图片描述
然后进入数据库中查看是否获取到’PHP’职位相关的信息。
在这里插入图片描述
好了,大功告成!
源码和相关资源我已上传至微信公众号 ‘神秘程序员00’,大家有问题可以看一下作为参考学习!!

猜你喜欢

转载自blog.csdn.net/qq_36807888/article/details/99887537