Python爬虫实战,requests模块,Python实现拉勾网求职信息数据分析与可视化

article/2025/7/11 9:17:41

前言

利用requests爬取拉勾网求职信息数据分析与可视化,废话不多说。

让我们愉快地开始吧~

开发工具

**Python版本:**3.6.4

相关模块:

requests模块;

re模块;

os模块

jieba模块;

pandas模块

numpy模块

pyecharts模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

数据爬取

爬取拉勾网求职信息

1.requests 请求,获取单页面

# 我们最常用的流程:网页上复制url->发送get请求—>打印页面内容->分析抓取数据 
# 1.获取拉钩网url 
req_url = 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=' 
# 2.发送get请求 
req_result = requests.get(req_url) 
# 3.打印请求结果 
print(req_result.text)

输出结果如下

<html>  <head>     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="renderer"  content="webkit">     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  </head>  <script type="text/javascript" src="https://www.lagou.com/utrack/trackMid.js?version=1.0.0.3&t=1529144464"></script>  <body>   <input type="hidden" id="KEY" value="VAfyhYrvroX6vLr5S9WNrP16ruYI6aYOZIwLSgdqTWc"/>  <script type="text/javascript">HZRxWevI();</script>é?μé?¢?? è????-...  <script type="text/javascript" src="https://www.lagou.com/upload/oss.js"></script>  </body></html>

上述结果我们可以看出与我们想象的还是差别很大。
为什么会出现以上这种情况呢,其实很简单,因为它并不是简单的静态页面,我们知道请求方式有get和post请求两种基本区别如下

(1)Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位 于信息头后面的实体中。GET和POST只是发送机制不同,并不是一个取一个发. (2)GET请求时其发送的信息是以url明文发送的,其参数会被保存在浏览器历史或web服务器中, 而post则不会某(这也是后面我们翻页的时候发现拉勾网翻页时 浏览器 url栏地址没有变化的原因。)

2.分析页面加载,找到数据

1.请求分析

在拉钩网首页,按F12进入开发者模式,然后在查询框中输入python,点击搜索,经过我的查找,终于找到了页面上职位信息所在的页面,的确是一个post请求,而且页面返回内容为一个json格式的字典。

json格式字典

2.返回数据内容分析
  页面上:我们主要获取7个数据(公司|城市|职位|薪资|学历要求|工作经验|职位优点)

获取数据

json数据中:我把爬下来的json数据整理了一下,如下图

数据整理

我们会发现,我们需要的数据全在req_info['content']['positionResult']['result']里面,为一个列表,而且还包含许多其他的信息,本次我们不关心其他数据。我们所需要数据如下图框

数据

3.添加headers 信息,模仿浏览器请求

通过上面的请求分析我们可以找到post请求的网址为:https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false,如果此时我们直接发送post请求,会提示如下代码:

{'success': False, 'msg': '您操作太频繁,请稍后再访问', 'clientIp': '122.xxx.xxx.xxx'}

出现这种提示的原因是,我们直接post访问url,服务器会把我们误认为‘机器人’,这也是一种反爬,解决方法很简单,加一个请求头即可完全模拟浏览器请求,请求头获取见下图

请求头

4.解析页面,实现翻页爬取

分析发现下面规律:
post请求中,有个请求参数->表单数据,包含三个参数first、kd、pn,通过动图演示,我们不难猜出其含义

data = {  'first':'true', # 是不是第一页,false表示不是,true 表示是                        'kd':'Python', # 搜索关键字         'pn':1 # 页码      }

规律

代码

import requests\
# 1. post 请求的 url\
req_url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'\
# 2. 请求头 headers\
headers = {'你的请求头'}\
# 3. for 循环请求\
for i in range(1,31):\data = { 'first':'false','kd':'Python','pn':i}    \# 3.1 requests 发送请求\req_result = requests.post(req_url,headers = headers,data = data)    req_result.encoding = 'utf-8'\# 3.2 获取数据\req_info = req_result.json()    \# 打印出获取到的数据\print(req_info)

5.爬取数据存入csv文件

def file_do(list_info):    # 获取文件大小    file_size = os.path.getsize(r'G:\lagou_test.csv')    \if file_size == 0:        \# 表头        name = ['公司','城市','职位','薪资','学历要求','工作经验','职位优点']        \# 建立DataFrame对象        file_test = pd.DataFrame(columns=name, data=list_info)        \# 数据写入        file_test.to_csv(r'G:\lagou_test.csv', encoding='gbk',index=False)    \else:        \with open(r'G:\lagou_test.csv','a+',newline='') as file_test :  # 追加到文件后面            writer = csv.writer(file_test)          \# 写入文件            writer.writerows(list_info)

展示爬取的数据

数据

数据可视化

数据分析+pyechart数据可视化

薪资分布分析

# 薪资分析,下面的几个都是柱状图,和这个地方分析一样# 统计各个城市出现次数
salary_lists = {}for x in city: 
salary_lists[x] = salary.count(x) 
key = [] 
values = []for k,v in salary_lists.items():    key.append(k)    values.append(v) 
bar2 = Bar('求职信息数据化','需求量',page_title='薪资分布')
# 图表其他主题:vintage,macarons,infographic,shine,roma
bar2.use_theme('vintage') 
bar2.add('薪资',key,values,is_more_utils = True,is_datazoom_show = True,xaxis_interval=0, xaxis_rotate=30, yaxis_rotate=30) 
bar2.render()

薪资分布分析

我们可以看到,python的薪资基本都是10k起步,大部分公司给出薪资在10k-40k之间,所以,不要怕学python吃不到饭。

2.工作地点分析

工作地点分析

通过图表,我们很容易看出,需要python程序员的公司大多分布在北京、上海、深圳,再后面就是广州了,所以,学python的同学千万不要去错城市哦。

3.职位学历要求

职位学历要求

根据图表显示,python程序员的学历要求并不高,主要是本科,虽然学历要求不高,但一定要有思辨能力哦。

4.工作经验要求

工作经验要求

主要是需要3-5年工作经验的同学,不老也不年轻,成熟稳重,又能学新东西的年龄,招聘公司真聪明。

5.工作职位研究方向分析

工作职位研究方向分析

6.工作福利优点分析

# 福利关键词分析
content = ''
# 连接所有公司福利介绍
for x in positionAdvantage:    content = content + x
# 去除多余字符
content = re.sub('[,、(),1234567890;;&%$#@!~_=+]', '', content)
# jieba 切词,pandas、numpy计数
segment = jieba.lcut(content) 
words_df = pd.DataFrame({'segment': segment}) 
words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数": numpy.size}) 
words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False) test = words_stat.head(1000).values
# 制作词云图\
codes = [test[i][0] for i in range(0,len(test))] 
counts = [test[i][1] for i in range(0,len(test))] 
wordcloud = WordCloud(width=1300, height=620,page_title='福利关键词') wordcloud.add("福利关键词", codes, counts, word_size_range=[20, 100]) wordcloud.render()

工作福利优点分析


http://chatgpt.dhexx.cn/article/OklGLcA2.shtml

相关文章

爬虫学习之17:爬取拉勾网网招聘信息(异步加载+Cookie模拟登陆)

很多网站需要通过提交表单来进行登陆或相应的操作&#xff0c;可以用requests库的POST方法&#xff0c;通过观测表单源代码和逆向工程来填写表单获取网页信息。本代码以获取拉勾网Python相关招聘职位为例作为练习。打开拉钩网&#xff0c;F12进入浏览器开发者工具&#xff0c;可…

python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)

python成功爬取拉勾网&#xff08;一个小白的心里路程&#xff09; 最开始想爬取拉钩是因为半年前上python实验课的时候&#xff0c;老师给了两个任务&#xff0c;一个时爬取糗百的笑话内容&#xff0c;另一个时爬取拉勾网的职位信息&#xff0c;当时因为课时紧张的缘故&#…

爬虫实例二:爬取拉勾网招聘信息

爬虫实例二&#xff1a;爬取拉勾网招聘信息 如果是第一次看本教程的同学&#xff0c;可以先从一开始&#xff1a; 爬虫实例一&#xff1a;爬取豆瓣影评 欢迎关注微信公众号&#xff1a;极简XksA 微信账号&#xff1a;xksnh888 转载请先联系微信号&#xff1a;zs820553471 …

python爬虫之爬取拉勾网

这次要爬取拉勾网&#xff0c;拉勾网的反爬做的还是很不错的啊&#xff0c;因为目标网站是Ajax交互的我一开始是直接分析json接口来爬取的&#xff0c;但是真的很麻烦&#xff0c;请求头一旦出点问题就给识别出来了后续我就改了一下方法用selenium来模拟浏览器去获取 招聘求职…

爬虫练习六:爬取拉勾招聘信息

1. 明确需求 1. 初学爬虫时&#xff0c;看着各路大佬以拉勾网为案例进行爬虫讲解&#xff0c;自己也这样尝试。结果因为个人水平实在太低&#xff0c;很快就触发反爬虫机制&#xff0c;甚至连个人的账号都被封禁。所以这次想要重新挑战一下&#xff0c;爬取拉勾展示的招聘数据。…

用接口登录拉勾网

前段时间一直忙于公司项目的测试工作导致一周多没有撸代码&#xff0c;所以今天通过悠悠是博客学习了一下如何让用接口登录拉勾网 下面介绍一下吧&#xff01;分享下经验以及心得&#xff0c;&#xff0c;虽然我知道也没什么人会看&#xff01; 首先呢要先登录拉钩网的网站&am…

拉勾网登录问题

拉钩登录问题&#xff0c;在参考别人的博客后&#xff0c;解决啦 class lagouSpider(CrawlSpider):name lagouallowed_domains [www.lagou.com]start_urls [https://www.lagou.com/]agent "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/" \"537.36 (…

selenium实例登陆拉勾网 外加手动验证验证码

selenium模拟登陆拉钩网 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import os, json, time from urllib import parse from lxml import etree from fake_…

python -- 拉勾网爬虫模拟登录

入门爬虫一段时间&#xff0c;最近在做一个拉勾网的数据爬虫分析&#xff0c;项目也快接近尾声了&#xff0c;于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反爬虫机制还是可以的&#xff0c;一开始用scrapy shell 分析拉勾网&#xff0c;发现拉勾网要校验usera…

基于Python的拉勾网的模拟登录获取cookie

lagou_login 拉勾网的模拟登录获取cookie&#xff0c;为爬虫做准备, 喜欢的点个赞&#xff0c;谢谢 入门爬虫一段时间&#xff0c;最近在做一个拉勾网的数据爬虫分析&#xff0c;项目也快接近尾声了&#xff0c;于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反…

selenium模拟登陆拉勾网

初学selenium&#xff0c;尝试了一下模拟登录拉勾网&#xff0c;感觉还挺好玩的 就剩下最后的验证码不会处理了。。。 思路就是在网页代码中找到对应的框的属性进行查询&#xff0c;然后点击、输入就进行了。 之后就会看到Chrome弹出来自动完成一系列动作&#xff0c;感觉很…

如何高效地学习编程语言?

学习编程语言是一种技巧&#xff1a;做好了&#xff0c;你会感受到掌握新事物之后的快感&#xff1b;做不好&#xff0c;就会接二连三的沮丧&#xff0c;甚至放弃。下面我将介绍一些技巧与方法&#xff0c;以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习…

完全零基础,到底该怎样学习编程?

学习编程的过程&#xff0c;大致如下&#xff1a; 看书、看博客、学课程或者看视频等 模仿着书上或者博客的代码&#xff0c;进行复现&#xff0c;复现不重要&#xff0c;思考才是关键 ⚠️ 思考学习别人思路后&#xff0c;脱离书本和博客&#xff0c;完全自己实现功能 自己…

学习编程先学什么?怎么学习编程?

怎么学习编程 随着IT行业的快速发展&#xff0c;现在越来越多的人看中IT行业的前景&#xff0c;很多的人选择IT行业。其中大部分人会选择了学习编程语言&#xff0c;那么&#xff0c;怎么学习编程语言、学习编程先学什么就是人们最常遇到的困难&#xff0c;因此&#xff0c;小编…

我是如何学习编程的

我是如何学编程的 前世因今世果一轮回一回眸理论基础资源选择编程没有捷径合格程度兴趣培养学习时长解决问题推荐资源 学习资源推荐 微信扫码关注公众号 &#xff1a;前端前端大前端&#xff0c;追求更精致的阅读体验 &#xff0c;一起来学习啊关注后发送关键资料,免费获取一整…

骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师

本文章向大家介绍怎样学习编程&#xff0c;才能快速从0基础&#xff0c;变成编程大师&#xff0c;主要包括骨灰级程序员告诉你&#xff0c;怎样学习编程&#xff0c;才能快速从0基础&#xff0c;变成编程大师使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有…

新手如何学习编程?

文章来源&#xff1a;微信公众号丨代码情缘 这篇文章就和大家简单聊聊&#xff0c;如何学习编程&#xff1f; 2021 年内卷、躺平从一个小圈子话题快速升温为社会话题&#xff0c;其实很多人都想过躺平&#xff0c;那么首先问一下自己&#xff0c;有什么资本躺平&#xff1f; …

想自学编程,先学什么好?给你三个建议,自己斟酌

要学一门编程语言&#xff0c;我们要了解相应的语法规则&#xff0c;大概知道计算机读取代码的逻辑&#xff0c;培养机器思维。 学习编程&#xff0c;最开始应该先了解一下计算机的历史&#xff0c;计算机基础。因为你在编程的时候&#xff0c;你需要让计算机知道你的思维&…

微信小程序map组件地图定位当前位置

小程序map组件的应用方式&#xff1a;简单版 wxml: <map id"map" latitude"{{latitude}}" longitude"{{longitude}}" controls"{{controls}}" bindcontroltap"controltap"markers"{{markers}}" bindmarkerta…

Android 开发百度地图定位显示当前位置

Android 开发百度地图定位显示当前位置 配置百度地图-获取 SHA1 找到自己安装 Android SDK 的位置&#xff08;&#xff0c;该位置下面有一个 .android 文件夹&#xff1b;使用 cmd 命令进入该文件夹下&#xff1b;然后执行命令 keytool -list -v -keystore debug.keystore&a…