手把手带你抓取智联招聘的“数据分析师”岗位!

网友投稿 313 2022-08-31

手把手带你抓取智联招聘的“数据分析师”岗位!

前言

很多网友在后台跟我留言,是否可以分享一些爬虫相关的文章,我便提供了我以前写过的爬虫文章的链接(如下链接所示),大家如果感兴趣的话也可以去看一看哦。在本文中,我将以智联招聘为例,分享一下如何抓取近5000条的数据分析岗信息。

往期爬虫链接

​​上海历史天气和空气质量数据获取(Python版)​​

​​网络爬虫-京东优惠活动数据分析​​

​​快来看看招商银行理财产品数据(代码及分析)​​

​​用Python爬下6万共享单车数据,谈谈单车热潮中的城市​​

​​百度指数之图像数字识别(2)​​

​​抓取百度指数引发的图像数字识别​​

​​看看融资界都有哪些事情发生​​

​​【干货】手把手带你抓“网上购物”类APP信息(含代码)​​

​​快来围观2W+的豆瓣电影分类排行榜(含代码)​​

​​什么?你了解二手车市场?(含爬虫代码)​​

​​(干货)数据分析案例--以上海二手房为例​​

​​通过Python抓取天猫评论数据​​

​​使用Python实现豆瓣阅读书籍信息的获取​​

​​使用Python爬取网页图片​​

爬虫流程

首先简单聊一下Python抓取互联网数据的一般步骤,如下图所示:

1)发送请求,向对方服务器发送待抓取网站的链接URL;2)返回请求,在不发生意外的情况下(意外包括网络问题、客户端问题、服务器问题等),对方服务器将会返回请求的内容(即网页源代码)3)数据存储,利用正则表达式或解析法对源代码作清洗,并将目标数据存储到本地(txt、csv、Excel等)或数据库(MySQL、SQL Server、MongoDB等)

爬虫实操

接下来,在理解了爬虫流程之后,我们借助于智联招聘的网站,跟大家分析如何一步一步的完成数据的抓取。寻找目标URL         如下图所示,是在智联招聘网站上搜索“数据分析师”岗位后的响应结果。按照常理,需要按一下键盘中的F12键,对网页内容进行监控。

发送请求并返回请求内容         既然找到了目标URL,下面要做的就是基于Python向智联招聘的服务器发送请求了,具体代码如下:

import requests # 用于发送URL请求import pandas as pd # 用于构造数据框import random # 用于产生随机数import time # 用于时间停留# 根据第一页的URL,抓取“数据分析师”岗位的信息url = r'构造请求的头信息,防止反爬虫headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}# 利用requests包中的get函数发送请求response = requests.get(url, headers = headers)# 基于response返回Json数据datas = response.json()

如上结果所示,即为抓取回来的招聘信息,这些信息是以字典的形式存储起来的。需要说明的是,在发送请求的代码中,添加了请求头信息,其目的就是防止对方服务器禁止Python爬虫。关于头信息可以在Headers选项中的“Request Headers”部分找到,读者只需将“User-Agent”值摘抄下来即可。

内容解析(Json)         下面利用字典的键索引知识,将所需字段的值解析出来。这里不妨以公司名称为例,利用字典的索引技术将其取出来。具体如下图所示:

OK,按照如上的策略,便可以取出其他字段的信息,具体代码如下:

# 根据Json数据返回每一条招聘信息# 返回公司名称company = [i['company']['name'] for i in response.json()['data']['results']]# 返回公司规模size = [i['company']['size']['name'] for i in response.json()['data']['results']]# 返回公司类型type = [i['company']['type']['name'] for i in response.json()['data']['results']]# 返回公司招聘信息positionURL = [i['positionURL'] for i in response.json()['data']['results']]# 返回工作经验的要求workingExp = [i['workingExp']['name'] for i in response.json()['data']['results']]# 返回教育水平的要求eduLevel = [i['eduLevel']['name'] for i in response.json()['data']['results']]# 返回薪资水平salary = [i['salary'] for i in response.json()['data']['results']]# 返回工作岗位名称jobName = [i['jobName'] for i in response.json()['data']['results']]# 返回福利信息welfare = [i['welfare'] for i in response.json()['data']['results']]# 返回岗位所在城市city = [i['city']['items'][0]['name'] for i in response.json()['data']['results']]# 返回经度lat = [i['geo']['lat'] for i in response.json()['data']['results']]# 返回纬度lon = [i['geo']['lon'] for i in response.json()['data']['results']]# 将返回的信息构造表格pd.DataFrame({'company':company,'size':size,'type':type,'positionURL':positionURL, 'workingExp':workingExp,'eduLevel':eduLevel,'salary':salary, 'jobName':jobName,'welfare':welfare,'city':city,'lat':lat,'lon':lon})

数据存储         如上操作只是将招聘网站中的第一页内容抓取下来,如果需要抓取n多页,就需要借助于for循环的技术。但在循环之前,需要准确找到目标链接的规律,然后使用for循环就水到渠成了。所以,我们按照之前的方法,找到第二页、第三页、第四页链接,然后发现其中的规律,如下图所示:

如上图所示,在链接中只有一部分内容发生变化,即“start=”,而其他部分都保持不变。所以,按照这个规律就可以对多页内容进行抓取,代码如下:

# 构造空列表,用于存储各页的招聘信息jobs = []# 利用for循环,生成规律的链接,并对这些链接进行请求的发送和解析内容for i in range(0,6001,60): url = ' response = requests.get(url, headers = headers) print('Down Loading:',' company = [i['company']['name'] for i in response.json()['data']['results']] size = [i['company']['size']['name'] for i in response.json()['data']['results']] type = [i['company']['type']['name'] for i in response.json()['data']['results']] positionURL = [i['positionURL'] for i in response.json()['data']['results']] workingExp = [i['workingExp']['name'] for i in response.json()['data']['results']] eduLevel = [i['eduLevel']['name'] for i in response.json()['data']['results']] salary = [i['salary'] for i in response.json()['data']['results']] jobName = [i['jobName'] for i in response.json()['data']['results']] welfare = [i['welfare'] for i in response.json()['data']['results']] city = [i['city']['items'][0]['name'] for i in response.json()['data']['results']] lat = [i['geo']['lat'] for i in response.json()['data']['results']] lon = [i['geo']['lon'] for i in response.json()['data']['results']] # 随机生成5~8之间的实数,用于页面的停留时长(仍然是防止反爬虫) seconds = random.randint(5,8) time.sleep(seconds) # 将每一页的内容保存到jobs列表中 jobs.append(pd.DataFrame({'company':company,'size':size,'type':type,'positionURL':positionURL, 'workingExp':workingExp,'eduLevel':eduLevel,'salary':salary, 'jobName':jobName,'welfare':welfare,'city':city,'lat':lat,'lon':lon}))# 拼接所有页码下的招聘信息jobs2 = pd.concat(jobs)# 将数据导出到Excel文件中jobs2.to_excel('jobs.xlsx', index = False)

如上结果所示,即为数据导出后的Excel效果图。在下一期,我将针对抓取回来的数据,进行内容的分析。

结语

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:五分钟了解这几个numpy的重要函数
下一篇:劳斯莱斯、润百颜营销翻车,品牌KOL营销该怎么做?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~