使用requests爬取拉勾网python职位数据

爬虫目的

本文是想通过爬取拉勾网Python相关岗位数据,简单梳理Requestsxpath的使用方法。

代码部分并没有做封装,数据请求也比较简单,所以该项目只是为了熟悉requests爬虫的基本原理,无法用于稳定的爬虫项目。

爬虫工具

这次使用Requests库发送http请求,然后用lxml.etree解析HTML文档对象,并使用xpath获取职位信息。

Requests简介
Requests是一款目前非常流行的http请求库,使用python编写,能非常方便的对网页Requests进行爬取。

官网里介绍说:Requests is an elegant and simple HTTP library for Python, built for human beings.
Requests优雅、简易,专为人类打造!

总而言之,Requests用起来简单顺手。

Requests库可以使用pip或者conda安装,本文python环境为py3.6。

试试对百度首页进行数据请求:

# 导入requests模块
import requests<br>
# 发出http请求
re = requests.get("https://www.baidu.com/")
# 查看响应状态
print(re.status_code)
# 查看url
print(re.url)
# 查看响应内容
print(re.text)
# 查看编码
print(re.encoding)
# 二进制响应内容
print(re.content)
# json响应内容
print(re.json)

xpath简介
xpath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
对获取的数据进行解析需要用到lxml库,lxml库是Python的一个解析库,支持HTML和XML的解析,支持XPath。

开始数据采集

1、请求地址:
https://www.lagou.com/zhaopin/Python/

2、需要爬取的内容
获取职位概况信息,包括:

  • 职位名称
  • 公司名称
  • 公司简介
  • 薪水
  • 职位招聘对象
  • 工作职责
  • 工作要求

3、查看html
如果你使用chrome浏览器,登陆拉勾网,按F12可以进入开发者工具页面:

这时候你会看到该页面的html网页源码。

接下来需要寻找岗位信息对应的源码,比如说我想要获取职位名称:

你会看到开发者工具页面左上角有个箭头标志,你需要点击它,然后再点击岗位名称,就能看到对应的源码。

知道对应的源码后,我们就可以利用xpath提取里面的文本。

4、利用requests发出数据请求

# 请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Core/1.47.933.400 QQBrowser/9.4.8699.400',}# 发出数据请求,返回response响应对象
r = requests.get('https://www.lagou.com/zhaopin/Python/',headers=headers)
# 进行utf-8编码
r.encoding = "utf-8"

5、利用xpath提取数据

# 构造一个xpath解析对象
selector = etree.HTML(r.text)
# 职位编号,一页共有14个职位,所以这里可以传递0~13任意数字
row_num = str(0)
'''获取职位概况信息,包括:职位名称、公司名称、公司简介、薪水、职位招聘对象'''
# p_name 职位名称
p_name = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//h3/text()'.format(row_num))[0]
# p_company 招聘公司名称
p_company = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="company_name"]/a/text()'.format(row_num))[0]
# p_industry 招聘公司简介
p_industry = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="industry"]/text()'.format(row_num))[0]
# p_money 职位薪资
p_money = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//span[@class="money"]/text()'.format(row_num))[0]
# p_require 职位招聘对象
p_require = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//div[@class="li_b_l"]/text()'.format(row_num))[2]
# 该职位详细信息跳转链接
p_href = selector.xpath('//ul[@class="item_con_list"]/li[@data-index={}]//a[@class="position_link"]/@href'.format(row_num))[0]

岗位职责和要求的信息在另外的网页,所以要先获取对应网址,再进行数据请求。

''' 获取工作职责和工作要求等详细信息'''
# 返回response响应对象
r_detail = requests.get(p_href,headers=headers)
# 进行utf-8编码
r_detail.encoding = "utf-8"
# 解析HTML对象
selector_detail = etree.HTML(r_detail.text)
# p_detail 工作职责和工作要求信息
p_detail = selector_detail.xpath('//div[@class="job-detail"]/p//text()')

将所有信息放进列表并打印:

'''将获取到的有效信息放到列表中'''
p_list = [p_name, p_company, p_industry.strip(), p_money, p_require.strip(),"\n ".join(p_detail)]
for i in p_list:print(i)

输出:

总结

本文使用requests和xpath工具对拉勾网python职位数据进行爬取并解析,旨在了解requests和xpath的使用方法。

对于想翻页爬取所有岗位信息,本文并无介绍。有兴趣的童鞋可以更改地址参数,对代码进行动态包装,尝试爬取所有python岗位信息。

最后,推荐一款不错的自动化爬虫工具-亮数据。

亮数据平台提供了强大的数据采集工具,比如Web Scraper IDE、亮数据浏览器、SERP API等,能够自动化地从网站上抓取所需数据,无需分析目标平台的接口,直接使用亮数据提供的方案即可安全稳定地获取数据。

网站:https://get.brightdata.com/weijun

亮数据浏览器支持对多个网页进行批量数据抓取,适用于需要JavaScript渲染的页面或需要进行网页交互的场景。

另外,亮数据浏览器内置了自动网站解锁功能,能够应对各种反爬虫机制,确保数据的顺利抓取。它能兼容多种自动化工具,如Puppeteer、Playwright和Selenium等,用户可以根据需求选择合适的工具进行数据抓取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标和问题:从回溯到动态规划的旅程

目录 引言 题目描述 示例 初步思路&#xff1a;回溯法 回溯法实现 分析 转变思路&#xff1a;动态规划 问题转换 状态定义 状态转移方程 二维动态规划实现 压缩到一维动态规划 一维动态规划实现 详细讲解&#xff1a;从回溯到动态规划的旅程 1. 从回溯到动态规划…

【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven+文档 前后端可分离也可不分离

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven文档 前后端可分离也可不分离 2项目介绍 系统功能&#xff1a; 美容院管理系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改…

YOLO-letter box

最细致讲解yolov8模型推理完整代码--&#xff08;前处理&#xff0c;后处理&#xff09; - 博客-中国极客 (chinageek.org) 直接用resize&#xff0c;图片会变形&#xff0c;宽高比会不对 letterbox函数就是把图片弄到想要的大小&#xff0c;保持宽高比&#xff0c;然后少掉的部…

数字媒体技术基础之:DNG 文件

DNG&#xff08;Digital Negative&#xff09;文件是一种用于存储原始图像数据的文件格式&#xff0c;由 Adobe Systems 于2004年开发并推广。DNG 是一种开放的、非专利的原始图像格式&#xff0c;旨在为不同相机制造商提供一个统一的存储格式。DNG 文件保存了原始的、未处理的…

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作&#xff0c;但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题&#xff0c;第二阶段是进行模拟一个简易线程库&#xff08;为了加深对于C库封装linux原生线程的理解&#xff09;&#xff0c;第三阶段就是互斥。 目录 线程id…

Python-数据分析组合可视化实例图【附完整源码】

数据分析组合可视化实例图 开篇&#xff1a;应女朋友的要求&#xff0c;于是写下了这篇详细的数据可视化代码及完整注释 一&#xff1a;柱状图、折线图横向组合网格布局 本段代码使用了pyecharts库来创建一个包含多个图表&#xff08;柱状图、折线图&#xff09;和网格布局的…

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装&#xff0c;只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名&#xff0c;例如&#xff1a; bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

【NOI-题解】1372. 活动选择1456. 淘淘捡西瓜1485. 接水问题

文章目录 一、前言二、问题问题&#xff1a;1372. 活动选择问题&#xff1a;1456. 淘淘捡西瓜问题&#xff1a;1485. 接水问题 三、感谢 一、前言 本章节主要对贪心问题进行讲解&#xff0c;包括《1372. 活动选择》《1456. 淘淘捡西瓜》《1485. 接水问题》题目。 二、问题 问…

Debian linux安装最新版Cmake

直接sudo apt install camke不是最新版本 卸载cmake sudo apt autoremove cmake下载cmake cmake官网 最上面的是候选版本&#xff0c;往下滑是最新稳定版 解压&#xff08;改成自己的包&#xff09; tar -zxvf cmake-3.30.0-rc4.tar.gz进入解压后的文件夹 lscd cmake-3.3…

【项目实践】贪吃蛇

一、游戏效果展示二、博客目标三、使用到的知识四、Win32 API 介绍 4.1 WIn32 API4.2 控制台程序4.3 控制屏幕上的坐标COORD4.4 GetStdHandle4.5 GetConsoleCursorInfo 4.5.1 CONSOLE_CURSOR_INFO 4.6 SetConsoleCursorInfo4.7 SetConsoleCursorPosition4.8 GetAsyncKeyState 五…

Python 项目依赖离线管理 pip + requirements.txt

背景 项目研发环境不支持联网&#xff0c;无法通过常规 pip install 来安装依赖&#xff0c;此时需要在联网设备下载依赖&#xff0c;然后拷贝到离线设备进行本地安装。 两台设备的操作系统、Python 版本尽可能一致。 离线安装依赖 # 在联网设备上安装项目所需的依赖 # -d …

Unity射击游戏开发教程:(29)躲避敌人的子弹射击

在这篇文章中,我将介绍如何创建一个可以使玩家火力无效的敌人。创建的行为如下...... 当玩家向敌人开火时,敌人会向左或向右移动。向左或向右的移动是随机选择的,并在一段时间后停止敌人的移动。如果敌人移出屏幕,它就会绕到另一边。将一个精灵拖到画布上,将其缩小以匹配游…

03.C1W2.Sentiment Analysis with Naïve Bayes

目录 Probability and Bayes’ RuleIntroductionProbabilitiesProbability of the intersection Bayes’ RuleConditional ProbabilitiesBayes’ RuleQuiz: Bayes’ Rule Applied Nave Bayes IntroductionNave Bayes for Sentiment Analysis P ( w i ∣ c l a s s ) P(w_i|clas…

基于RK3588的GMSL、FPDLink 、VByone及MIPI等多种摄像模组,适用于车载、机器人工业图像识别领域

机器人&工业摄像头 针对机器人视觉与工业检测视觉&#xff0c;信迈自主研发和生产GMSL、FPDLink 、VByone及MIPI等多种摄像模组&#xff0c;并为不同应用场景提供多种视场角度和镜头。拥有资深的图像算法和图像ISP专家团队&#xff0c;能够在软件驱动层开发、ISP算法、FPG…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

ffmpeg下载/配置环境/测试

一、下载 1、访问FFmpeg官方网站下载页面&#xff1a;FFmpeg Download Page&#xff1b; 2、选择适合Windows的版本&#xff08;将鼠标移动到windows端&#xff09;。通常&#xff0c;你会找到“Windows builds from gyan.dev”或者“BtbN GitHub Releases”等选项&#xff0…

私域和社群的差别是什么?

社群就是拉很多人建群就可以了&#xff0c;但是私域不是&#xff0c;这里有三点不同 1、私域的用户来源&#xff0c;不仅仅是微信&#xff0c;而是基于一定的联系形成的链接&#xff0c;比如买了商家的货&#xff0c;反复购买觉得好&#xff0c;推荐给亲朋好友的二次开发用户&…

探讨4层代理和7层代理行为以及如何获取真实客户端IP

准备工作 实验环境 IP角色192.168.1.100客户端请求IP192.168.1.100python 启动的HTTP服务192.168.1.102nginx服务192.168.1.103haproxy 服务 HTTP服务 这是一个简单的HTTP服务&#xff0c;主要打印HTTP报文用于分析客户端IP #!/usr/bin/env python # coding: utf-8import …

java-数据结构与算法-02-数据结构-02-链表

文章目录 1. 概述2. 单向链表3. 单向链表&#xff08;带哨兵&#xff09;4. 双向链表&#xff08;带哨兵&#xff09;5. 环形链表&#xff08;带哨兵&#xff09;6. 习题E01. 反转单向链表-Leetcode 206E02. 根据值删除节点-Leetcode 203E03. 两数相加-Leetcode 2E04. 删除倒数…

C++必修:深入理解继承与虚继承

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 继承的概念与定义 1.1. 继承的概念 继承(inheritance)机制是面向对象程序设计…