前言


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

往期爬虫链接

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

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

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

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

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

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

一件有趣的事: 爬了爬自己的微信朋友

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

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

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

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

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

通过Python抓取天猫评论数据

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

使用Python爬取网页图片

爬虫流程

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

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

爬虫实操

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

                                                                  

接着,在原网页中下来滚动条,并点击“下一页”,此时右侧的监控台便发生了变化,读者需要按下图进行选择:

经过这四步的选择,就可以发现招聘网站上的信息都在这个Preview(预览)里面。那么问题来了,需要抓取的URL是什么呢?此时只需点击Headers卡即可,你会发现请求链接就是下图中框出来的部分:

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

import requests  # 用于发送URL请求
import pandas as pd # 用于构造数据框
import random  # 用于产生随机数
import time  # 用于时间停留# 根据第一页的URL,抓取“数据分析师”岗位的信息
url = r'https://fe-api.zhaopin.com/c/i/sou?pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&kt=3&lastUrlQuery=%7B%22jl%22:%22489%22,%22kw%22:%22%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88%22,%22kt%22:%223%22%7D&at=9c5682b1a4f54de89c899fb7efc7e359&rt=54eaf1be1b8845c089439d53365ea5dd&_v=0.84300214&x-zp-page-request-id=280f6d80d733447fbebafab7b8158873-1541403039080-617179'
# 构造请求的头信息,防止反爬虫
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 = 'https://fe-api.zhaopin.com/c/i/sou?start='+str(i)+'&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&kt=3&lastUrlQuery=%7B%22p%22:5,%22jl%22:%22489%22,%22kw%22:%22%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88%22,%22kt%22:%223%22%7D&at=17a95e7000264c3898168b11c8f17193&rt=57a342d946134b66a264e18fc60a17c6&_v=0.02365098&x-zp-page-request-id=a3f1b317599f46338d56e5d080a05223-1541300804515-144155'response = requests.get(url, headers = headers)print('Down Loading:','https://fe-api.zhaopin.com/c/i/sou?start='+str(i)+'&pageSize=60','......')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效果图。在下一期,我将针对抓取回来的数据,进行内容的分析。

结语

OK,关于使用Python完成招聘网站数据的抓取就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
关于Python的其他知识(包括数据的清洗、整理、运算、分析、可视化和建模),读者可以查阅我的新书《从零开始学Python数据分析与挖掘》,如果您对书中的内容有任何疑问,都可以联系我。

本文中的代码和数据可以从百度云盘中下载,只需关注数据分析1480”公众号,并回复智联招聘”即可。

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

  1. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

  2. Python爬虫项目:抓取智联招聘信息

    来自https://mp.weixin.qq.com/s/0SzLGqv2p0-IWSN3r8bOHA ''' Python爬虫之五:抓取智联招聘基础版 该文件运行后会产生一个代码,保存在这个Pyth ...

  3. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  4. Python | 爬虫抓取智联招聘(基础版)

    对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪工作的面试做准备?今天我们来抓取智联招聘的招聘信息,助你换工作成功! 运行平台: Windows   Python版本: ...

  5. Python爬虫:抓取智联招聘岗位信息和要求(基础版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  6. 北京python爬虫招聘信息_Python爬虫:抓取智联招聘岗位信息和要求(基础版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  7. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  8. python 爬虫学习:抓取智联招聘网站职位信息(二)

    在第一篇文章(python 爬虫学习:抓取智联招聘网站职位信息(一))中,我们介绍了爬取智联招聘网站上基于岗位关键字,及地区进行搜索的岗位信息,并对爬取到的岗位工资数据进行统计并生成直方图展示:同时进 ...

  9. Python爬虫抓取智联招聘(基础版)

    对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪工作的面试做准备?今天我们来抓取智联招聘的招聘信息,助你换工作成功! 运行平台: Windows   Python版本: ...

最新文章

  1. PS Material 漫谈 六: Material Availability Check
  2. python单词大全-python常用的单词
  3. 【华科考研机试题】最长最短文本
  4. LiveVideoStackCon2021音视频技术大会北京站今日开幕!
  5. Qt中使用OpenGL进行绘图
  6. 教你玩转CSS Position(定位)
  7. Python数据挖掘与机器学习技术入门实战
  8. 【java】深入理解Java JVM虚拟机中init和clinit的区别
  9. python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...
  10. 【原】opencv中cvCopy()和cvCloneImage()的区别:
  11. VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
  12. openFeign服务调用
  13. WinPmem:跨平台内存采集工具
  14. [android] android下文件访问的权限
  15. 电视盒子刷鸿蒙系统,当贝市场亲测有效三款获取电视和盒子root权限的工具应用...
  16. mikrotik固件升级
  17. python 移动平均线_使用python计算简单移动平均线
  18. 祛痘收缩毛孔的简单方法 - 健康程序员,至尚生活!
  19. Android开发 个人开发者几大后端云比较
  20. flowchart流程图

热门文章

  1. Android系统控件获取自定义属性
  2. java数组重置_Java:如何重置数组列表,使其为空
  3. Android开发笔记(一百六十二)蓝牙设备的连接与配对
  4. 史上最全的javascript知识点总结,浅显易懂。
  5. uoj problem 11 ydc的大树
  6. 斜线“\”与反斜线“/”应用场景的整理
  7. 在蓝图中设置人物动作 教程
  8. C/C++ 八股文(二)
  9. 割圆术c语言程序设计,组图:千古绝技 中国古代数学家的割圆术
  10. 计算机双工模式,windows10系统如何设置网络双工模式?