| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 获取拉勾网招聘信息——selenium爬取详解+scrapy关键步骤分析 -> 正文阅读 |
|
[开发测试]获取拉勾网招聘信息——selenium爬取详解+scrapy关键步骤分析 |
目录 前言为提升我们获取信息的综合能力,我们以反爬机制较强的拉勾网为例,讲解如何使用反反爬技术获取招聘网站的全面信息。如若侵权,请联系本人删除。 1.需求分析为了能获取拉勾网的招聘信息,我们首先应该做的就是需求分析。 1.1该要什么对于即将步入社会的我们,当然要知道未来就业公司状况,对于我来说首先呢就是查看岗位要求,学历要求确定自己是否符合条件,其次就是薪水范围再者就是工作地址等等。 1.2分析招聘信息1.2.1查看一级页面信息开始访问拉勾网https://www.lagou.com/,可以看到首页提供的职位还是蛮多的。 点击搜索框搜索java,选中一个岗位名称后点击右键->检查,岗位名称可在右侧找到。同理我们选中月薪,经验要求,公司名称等都能在右侧相应位置找到。 ?经过匹对后岗位名称,公司名称,月薪等也都在li节点下存有信息,而且分布有规律,即每一条招聘岗位的很多信息都分布在同级的li节点下,所以我们等会用xpath路径时候可以直接从li节点的属性值获取信息。 ?获取首页信息是不够的,比如没有岗位的具体要求和地址,所以我们要进入招聘信息的二级页面。在这之前我们要先找一下这里的源码有无二级页面的网址,这对接下来的步骤起很关键的作用。 在li节点的下的子节点大概的找了一下发现二级页面的网址还是存在的。 1.2.2查看二级页面信息进入二级页面,有职位诱惑,职位描述,和工作地址。职位诱惑在一级页面可以获取我就不再多述。 老规矩,分别选中职位描述和工作地址查看可以发现源码都是存在的,可以直接获取。 ?1.2.3查看下一页信息(涉及AJAX反爬)我们回到一级页面,滑到底部选择下一页右击检查,发现这里没有下一页的地址! 因为招聘网采用了AJAX技术,实现了前后端分离,并且请求参数以POST表单的形式提交。如果使用scrapy的话需要进一步分析招聘列表获取动态加载招聘列表的数据接口之后才能获取下一页数据。过程较为复杂,不容易理解,因此我选择了selenium。用selenium的话直接发生点击下一页的动作即可。 但如果直接在拉勾网首页进入一个岗位的话,会有下一页网址,比较简单,但没必要。 ?因为selenium,点击,输入那些动作都是轻而易举的,既然用了它,那么搞的华丽一点又何妨呢。 1.3爬取思路?我们知道了如何获取每一部分的招聘信息,现在就把思路串联起来。 使用selenium访问拉勾网首页,在搜索框搜索自己心仪的岗位,等跳转到一级页面后使用selenium的find_elements的方法获取职位名称,月薪,公司名称,以及二级页面的网址信息等,然后访问二级页面,继续用find_elements方法获取岗位需求和工作地址。爬取完成后点击下一页重复上面的步骤进行爬取。至于selenium的使用,可以看一下这篇文档。 1.4(附)selenium使用教程对于selenium还不太了解的同学可以看一下这篇文章,可以让你基本入门。 2.项目实施2.1环境准备PyCharm Community Edition 2021.2.1,selenium4.0.+ 2.2设计工程2.2.1创建爬虫文件进入pycharm,找到右上角file,点击new project,创建LagouEmployment_CSDN文件。 之后就进入到了我们熟悉的界面。 ?2.2.2构建driver对象构建driver对象我们必须有要访问的目标网址,和EdgeDriver的路径,使用webdriver时要导入webdriver包。因为实现后续每一步操作都要使用driver,所以在主函数上面定义。前面说过,我们爬取招聘信息是要在搜索框输入岗位实现自定义访问,所以我们要用input接收想要爬取的字符串。
这个交互要放在哪里好呢?适宜放在driver启动前。因为driver启动后会弹出一个浏览器,影响操作,所以要在他弹出前对kw赋值。这里的代码就是:
2.2.3构建访问入口函数构建一个名为entrance的访问入口函数,用来进入拉勾网和搜索岗位。注意:拉勾网有严格的反爬机制,为模拟人访问,我们每执行一些代码时应停止操作一段时间。所以要引进time.sleep函数。现在看一下用selenium拉勾网跟平时我们访问的有什么不同。
发现会弹出切换城市的浮窗。因为selenium开启的是一个全新纯净的浏览器,所以弹出的是初次访问拉勾的页面。 ?为此我们要关闭浮窗才能进行下一步操作。 选择一个心仪的城市,我的话要么选广州,要么选深圳。因为深圳岗位多一点,工资高一点所以我选择深圳。对深圳右击检查,确定源码中位置 复制xpath路径 然后使用find_element_xpath()的方法查找元素,并click()点击元素
之后进入到首页,为了能输入自定义字符串,我们右击检查搜索框 ?发现有‘input’字段,那就说明我们找对了, ?现在我们就要定位这个元素位置,用send_keys方法向其传入字符串。这次不用xpath查找,换另外一种方法。
传入字符串后接着就是点击搜索了。我们右击检查搜索 ?确定元素位置后click()一下,就能搜索了。完整代码如下:
注意:entrancce的两个参数由主函数传递进来。每执行一段程序建议休眠一段时间,休眠时长根据自身网络配置自行调整。 主函数添加这行代码: ?运行后就能对进行拉勾初步访问了 ?2.2.4构建爬取一级页面信息函数构建名为get_information的函数,用于爬取一级页面的招聘信息。现在,我要爬取这些数据 岗位名称, 月薪,公司名称,公司福利四项数据。 首先选中岗位名称右键检查 检查个屁不用检查了,现在拉勾网更新了,我要重写了早上写博客还好好的,现在就不行了 等我回来 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 4:32:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |