Python+selenium模块爬虫实战---拉勾网

2023-11-14

一. 项目需求

项目需求:实现一个可以自动获取拉钩网" 自定义搜索 "的岗位招聘信息的爬虫程序。

实现工具:Pycharm
运行环境:Python 3.9

二. selenium概述

Selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,支持chrome、firefox等主流浏览器。可以通过代码控制与页面上元素进行交互(点击、输入等),也可以获取指定元素的内容。

作用:自动打开浏览器,模拟人一样的操作去操控浏览器,可以在selenium中直接提取网页上的各种信息。

关于selenium模块的使用和详解以下网址可供参考
http://www.selenium.org.cn/1598.html

三. 爬虫思路

1.导入selenium库及其他相关的库
2.创建一个浏览器对象
3.打开拉钩网址
4.实现点击所需地区的选择
5.打开检查,使用xpath定位到搜索框
6.使用input方法实现自定义搜索功能
7.查找所需招聘信息存放的位置,进行数据提取

四. 代码实现

1.导入selenium库及其他相关的库

#导入selenium库
from selenium.webdriver import Chrome
#导入键盘库
from selenium.webdriver.common.keys import Keys
#导入时间库
import time

导入的键盘库可以实现键盘输入功能,便于完成自定义搜索的需求。

2.创建一个浏览器对象并打开拉钩网址

#创建浏览器对象
web = Chrome()
#打开拉钩网址
web.get('https://www.lagou.com/')

3.实现点击所需地区的选择
在这里插入图片描述

在页面任意空白区域点击右键,选择“ 检查 ”,点击如图红色方框内的小箭头,再回到页面进行所需城市的选取

如上图所示,在选取完城市广州后,在右边会有区域进行相互对应。

再在蓝色的区域进行鼠标右键点击,选择 Copy,再在其下选择 Copy XPath
在这里插入图片描述
代码呈现

找到城市广州的元素,进行点击
el = web.find_element_by_xpath('//*[@id="changeCityBox"]/ul/li[4]/a')
el.click() #点击事件 click

4.打开检查,使用xpath定位到搜索框

实现步骤跟以上类似,使用检查里面的元素面板,获取到对应的XPath进行定位。
在这里插入图片描述
5.使用input方法实现自定义搜索功能

i = [input('输入搜索关键字:')]
web.find_element_by_xpath('//*[@id="search_input"]').send_keys(i,Keys.ENTER)
#key.ENTER:使用键盘库的enter键功能,效果同键盘的enter键一样。
time.sleep(1)
#加入休息时间,由于网页的运行没有程序快,如果跟不上那么则可能报错

7.查找所需招聘信息存放的位置,进行数据提取

由于搜索岗位后的岗位信息网页结构没有发生改变,故用搜索python岗位的信息为例,获取信息存放的位置,进行数据提取。

首先先定位获取到所有的招聘岗位的信息,如下图可以看到每个岗位的招聘信息(蓝色框)都是在大的红色框内的
在这里插入图片描述
代码呈现

#查找存放数据的位置,进行数据提取
#找到页面中存放数据的所有list
li_list = web.find_elements_by_xpath('//*[@id="s_position_list"]/ul/li')

在以定位好的红色框内,再对蓝色框内的具体所需岗位信息进行细化提取,使用for循环将每一条招聘信息提取出来。方法同上,使用Copy XPath的值即可快速定位到所需的信息。

在这里插入图片描述
此处就只演示获取岗位的名称信息,小博主本着“ 授人以鱼不如授人以渔 ”的想法,其余的岗位信息都可以使用同样的操作步骤进行定位爬取

代码呈现

for li in li_list:
    #注意结尾要加text保存成文本
    job_name = li.find_element_by_tag_name('h3').text
    company = li.find_element_by_xpath('./div/div[2]/div/a').text
    job_price = li.find_element_by_xpath('./div[1]/div[1]/div[2]/div').text
    #此处就只爬取3个信息示例
    print('职位:',job_name,'公司:',company,'工资及相关要求:',job_price)

爬取效果呈现:

在这里插入图片描述

五. 完整代码

小博主第一次发博客,制作不易,看完的点个赞

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python+selenium模块爬虫实战---拉勾网 的相关文章

  • delphi ado 动态连接数据库

    unit Unit1 interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls DB ADODB E
  • Contains Duplicate III

    Given an array of integers find out whether there are two distinct indices i and j in the array such that the difference
  • 常用问题网址

    https www leonelngande com fetching the current route fragment in angular 7 RxJS https github com manojjha86 complete an
  • Router-Link详解

  • 文件(或文件夹)的复制(Java)

    将源文件 或目录 复制到另一个目录里 三种方法 1 最普通的方法 主要用File类中的方法和IO流相关的类进行递归复制 2 主要用Files类中的copy 方法递归复制 3 主要用Files类中的copy 方法和walkFileTree 方

随机推荐

  • 构建Buildroot根文件系统(I.MX6ULL)

    Busybox构建的根文件系统只有一些常用的命令和文件 Buildroot不仅集成了 busybox 而且还集成了各种常见的第三方库和软件 开发环境 Buildroot 版本 buildroot 2019 02 6 tar gz 虚拟机 4
  • XSS-通关小游戏(1-20)

    在玩游戏之前先简单的了解下 什么是XSS 1 什么是xss XSS攻击全称跨站脚本攻击 是为不和层叠样式表 Cascading Style Sheets CSS 的缩写混淆 故将跨站脚本攻击缩写为XSS XSS是一种在web应用中的计算机安
  • Unity --- UGUI(Unity Graphical user interface)--- Canvas画布

    1 UI User Interface 使用者与机器之间的交互界面 1 所谓的自适应系统指的是分辨率的适应 比如在一个分辨率下做的UI放到另一个分辨率下显示时 如果没有自适应系统的话就会导致UI过大 过小 被辟成一半等等情况 而有了自适应系
  • Android:项目结构

    前言 默认情况下 在 Android Studio 中创建 Android 项目后 将默认生成 Project Packages Scratches Android Project Fines Problems Production Tes
  • 性能指标有哪些

    1 响应时间 Response time 响应时间就是用户感受软件系统为其服务所耗费的时间 对于网站系统来说 响应时间就是从点击了一个页面计时开始 到这个页面完全在浏览器里展现计时结束的这一段时间间隔 看起来很简单 但其实在这段响应时间内
  • 开源GIS浅谈

    开源GIS浅谈 转 http blog csdn net happyduoduo1 article details 51773850 谈到GIS软件 首先让我们想到的是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品 从最初接触的ver
  • js中的微任务和宏任务,附面试题

    因为javascript是一门单线程语言 所以代码的解析执行都要以自上而下的执行 直到任务队列 task queue 的出现 js开始有了异步任务 当一段代码需要稍后执行时 便可以使用异步方案 setTimeout setInterval
  • Eclipse C debug报错Can‘t find a source file at “xxxxx“Locate the file or edit the source lookup path

    笔记备忘 1 操作入下 Debug configerations进入如下界面 双击你的放置器对应的选项 添加新的选项 在source位置记得添加如下选项 2 解决完上面报错还提示如下 no source for main step1 工程右
  • C++构造函数的各种用法全面解析(C++初学面向对象编程)

    文章目录 一 构造函数的基本用法 二 带参构造函数与其调用 三 拷贝构造函数 四 构造函数的重载 一 构造函数的基本用法 1 构造函数概念 一个类的对象被创建的时候 编译系统对象分配内存空间 并自动调用该构造函数 由构造函数完成成员的初始化
  • 解决:如何将pytorch的版本改为和cuda对应、如何使用笔记本电脑自带的NVIDIA使用GPU跑深度学习

    Step1 安装cuda 网址 https developer nvidia com cuda toolkit archive PS 此处必须先看看电脑显卡是否自己就装了cuda 可以通过执行命令行语句nvcc V以此检查cuda是否有 如
  • 字典表设计

    为什么字典表 存在问题 某些变量在多个地方使用 而且一般是固定的 但是随着系统升级和后期变化 可能需要改变 如果这些变量写死在代码里面将会变得难以维护 所以要将其从代码中抽离出来 一般的业务系统客户端与用户交互的时候都会使用下拉框组件 对于
  • Kafka3.0.0版本——消费者(分区的分配以及再平衡)

    目录 一 分区的分配以及再平衡 1 1 消费者分区及消费者组的概述 1 2 如何确定哪个consumer来消费哪个partition的数据 1 3 消费者分区分配策略 一 分区的分配以及再平衡 1 1 消费者分区及消费者组的概述 一个con
  • 样本的均值和方差的无偏估计与测试阶段均值方差的关系

    什么是无偏估计 估计是用样本统计量 可以理解为随机抽样 来估计总体参数时的一种无偏推断 无偏估计的要求就是 估计出来的参数的数学期望等于被估计参数的真实值 所以呢 可以看出 估计值也是一个变量 因为是随机的嘛 真实值谁也不知道啊 因为你不可
  • 数据隐藏之Qt中d指针详解

    最近看到代码有用到了Qt中的Q D指针 就去学习了下 发现真的很好用 因此写一篇文章总结下 student h class CStudent public CStudent CStudent private string m name in
  • LeetCode 1. 两数之和

    题目链接 https leetcode cn problems two sum 思路如下 从前往后遍历 n u m s nums
  • 分销系统开发 分销商城开发 分销功能 Java开发"三级分销"业务功能

    众所周知 互联网时代 分享经济现在随处可见 各行各业都有各种分销系统 最为常见的就是三级分销 那么如何实现这个业务功能了 笔者通过本篇图文案例给大家分享一下实现过程 此处以二级分级分销实现为例 1 什么是二级分销 二级分销其实是一种让用户分
  • 【面试】赢时胜和花旗

    一 赢时胜 1 springmvc的底层 DispatcherServlet gt HandlerMaping gt Handler gt HandlerAda 2 spring注入的方式 spring循环依赖 注解是否解决了循环依赖 3
  • 从setContentView到onResume应用显示过程分析

    之前总体笼统地分析了Acitivity从启动到显示的过程 Activty启动到显示的过程 一 Activty启动到显示的过程 二 发现很多细节没有注意到 后续挑些过程中比较重要的部分重点分析 在上一篇文章分析了一个app从zygote到on
  • 惠普笔记本的Windows10和Ubuntu20.04双系统安装教程

    Windows10和Ubuntu20 04双系统安装教程 1 下载Ubuntu系统镜像到D盘 2 下载安装镜像工具到D盘 3 制作Ubuntu的系统安装盘 4 磁盘分区 5 GPT分区安装Ubuntu 6 结语 7 参考资料 惠普暗影精灵使
  • Python+selenium模块爬虫实战---拉勾网

    Python selenium模块爬虫实战 拉勾网 一 项目需求 二 selenium概述 三 爬虫思路 四 代码实现 五 完整代码 一 项目需求 项目需求 实现一个可以自动获取拉钩网 自定义搜索 的岗位招聘信息的爬虫程序 实现工具 Pyc
Powered by Hwhale