基于Python的招聘网站信息爬取与数据分析
王芳
【摘 要】基于Python的招聘网站信息爬取与数据分析是Python爬虫的应用及Python数据分析的应用实战.对Python爬虫的设计和数据分析的流程进行了详细阐述,并对使用到的技术进行了详细解释以及给出最终分析结果图示.首先使用Python中的Scrapy框架定向抓取招聘信息,通过定向URL爬取招聘信息并存入数据库,然后对数据进行处理和分析,最终根据不同地区、学历要求等条件对某一职业的薪资进行分析,并将分析结果进行可视化展现.
企业建站系统源码【期刊名称】《微型机与应用》
【年(卷),期】2019(038)008
【总页数】6页(P42-46,57)
【关键词】爬虫;Scrapy;可视化
【作 者】王芳
【作者单位】太原科技大学 计算机科学与技术学院,山西 太原030024
【正文语种】中 文
【中图分类】TP391.9
0 引言
随着网络数据的爆炸式增长,获取有用的数据显得至关重要,网络爬虫技术则可以有效地获取关键数据信息。该技术是一种按照设计者所设定的规则,模拟成为浏览器,自动驱动抓取网页信息的程序或者脚本。网络爬虫的优点在于,它可以将整个网页完整爬取下来,而且具有高度的自定义性。之后,设计者就可以根据自己想要的数据来改善爬虫,使其删掉无用的信息而保存需要的数据。本文对Python爬虫的设计和数据分析的流程进行详细的阐述,然后对数据进行处理和分析,最终根据不同地区、学历要求等条件对某一职业的薪资进行分析,并将分析的数据可视化展现出来[1-2]。
1 相关背景介绍
1.1 爬虫技术
plsql安装中文包爬网程序搜寻网页的过程也是对请求和响应的处理。以浏览器渲染网页的过程为例,当用户打开网页时,浏览器会向目标网址所在的服务器发起请求。服务器响应请求并以特定格式的网页返回给浏览器。图1显示了通用的爬虫框架。开发爬网程序时,爬虫设计人员通常会根据爬网目标的特征选择网站中的一些有价值的网页地址作为爬网程序的初始目标。抓取程序开始运行后,这些URL将通过DNS服务器进行调度、解析和获取,以得到相应的IP地址[3]。
图1 爬虫框架
1.2 数据分析
目前,数据分析在各个行业和领域得到了广泛的应用。数据分析的典型应用主要体现在以下三个方面[4]:
(1)摸索性的数据分析。在得到数据时,数据可能会不符合要求,通过绘制表格和运用方程式的计算方法来探究其规律性。
(2)模型的选择和分析。在探索性分析的前提下,研究人员可以根据其规律开发出不同的分
批处理脚本析模型,然后通过对这些模型进行分析和探讨,选择一个合适的模型。
(3)推测判断分析。其主要用到的知识是数学统计,根据其统计结果可以推导或估计出模型的准确性和可靠性。
2 基于Python的招聘网站信息爬取与数据分析
2.1 Scrapy框架及运行过程
Scrapy工作流程如图2所示,运行过程如下[5]:
(1)爬虫引擎获得初始请求开始抓取。
(2)爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。
(3)爬虫调度器返回下一个请求给爬虫引擎。
(4)引擎请求被发送到加载程序,网络数据通过下载中间件下载。
(5)下载完成后,下载结果将返回到爬虫引擎。
(6)引擎通过中间件将加载器响应返回给搜寻器进行处理。
(7)爬虫处理响应到的内容,将其和新的URL返回给引擎。
(8)处置过的items,通过引擎传送给项目管道,然后引擎将处理结果返回给调度器,调度器就可以策划下一个请求的爬取。
(9)重复以上过程(继续步骤(1)),直到爬取完所有的URL请求。
2.2 Robots协议
Robots协议也叫机器人协议,它会产生一个文件,这个文件会限制搜索引擎,即限定哪些界面可以爬取。机器人协议是整个互联网中的一种大家都认可的规则制度。它主要是为了防止一些比较私人化的信息遭到泄漏,对隐私起到很好的保护。因为它不是强制性的,所以搜索引擎需要有意识地遵循它。
Robots协议对站点服务器根目录的具体实现方式进行了存储,格式为txt文件,文件名为。该文件中给出了限制爬虫的规则,主要限制了搜索引擎的爬取权限。
3 招聘信息的爬虫具体设计与实现
3.1 总体设计
本文对某招聘网站进行数据爬取,爬取内容为某一职位的有关招聘信息,包括公司名称、薪资、学历要求、经验要求、地址、岗位需求、职位名称。通过对该网站招聘信息的爬取,可以获取到很多有价值的信息,通多对信息的分析能够帮助求职者了解到某一职业的最新情况。
图2 Scrapy框架运行过程
实现爬虫共分为5大部分:分析初始爬取网页URL及其网页信息、实现爬取、数据存储、数据处理以及数据的分析和可视化。
(1)分析初始爬取网页URL及其网页信息。爬虫以网站的网址为起始点,所以需要对起始网址进行格式上的分析和构造。
(2)实现爬取。完成起始网址的分析后就可以对其分析到的初始URL进行爬取,根据返回结果调用不同的回调函数。
(3)数据存储。将获取到的数据存入MySQL中。
(4)数据处理。在数据分析之前,必须对这些脏数据进行清洗和处理。
(5)数据分析及可视化。
3.2 爬虫模块设计
3.2.1 抓取模块设计
本次爬虫设计的目标是获取不同岗位的招聘信息,爬虫是模拟浏览器的行为,所以在爬取工作前需清楚人工操作浏览器的流程,即清楚信息捕捉的流程。首先打开网站输入一个职位信息,例如Python工程师,这时进入招聘Python工程师概览的网页(称之为一级网页),查看网页源码信息发现这里包含的信息不够完整,需要点开单个招聘信息链接,进入详细招聘信息网页(称之为二级网页),根据分析,这里包含了爬取想要的所有信息,至此,本次爬虫的运行基本流程如图3所示。
图3 爬虫流程图
python请求并解析json数据
一个爬虫程序在爬取静态网页时,可以直接从中提取数据,但是爬取动态网页时,因为数据可能并不在网页源码中,就需要进行抓包分析。这里爬取的网站通过分析是静态网页,不需要进行抓包等操作,直接提取数据即可。
直接提取数据有很多方法,Python中常用的有以下几种[6-7]:
(1)正则表达式。
(2)通过Python中提供的库BeautifulSoup将HTML解析为对象进行处理。
(3)Scrapy框架支持XPath,通过XPath提取HTML中的信息。
本次实验使用的是XPath,XPath是一种语言,它描述了一种通过使用基于文档逻辑结构或层次结构路径的寻址语法来定位和处理可扩展标记语言(XML)文档中项目的方法。与每个表达式必须理解文档中的典型XML标记及其序列相比,XPath使得编写表达式变得更加容易。
3.2.2 存储模块设计
Python中可采用的存储方式有很多,常用的有JSON文件、CSV文件、MySQL数据库、Redis数据库以及MongoDB数据库等。本次实验没有涉及分布式爬虫,故选用的是MySQL数据库进行数据存储[8]。对数据进行存储前,需要通过Items.py文件对数据进行格式化处理,处理代码如下:
job =scrapy.Field()
#工作名称
company =scrapy.Field()
#公司名称
site =scrapy.Field()
#公司地点
salary =scrapy.Field()
#薪资
网页源代码怎么搜索关键词
experience =scrapy.Field()
#经验要求
education =scrapy.Field()
#学历要求
requirement =scrapy.Field()
#岗位需求
处理完成后将数据存入数据库,首先创建一个数据库表java用来存储招聘信息,如表1所示。
用户登录页面代码表1 招聘信息表字段名称类型长度非空约束说明Jobvarchar225是工作名称Companyvarchar225是主公司名称Sitevarchar50是公司地点Salaryvarchar50是薪资Experiencevarchar100否经验要求Educationvarchar100否学历要求Requirementvarchar4 000否岗位需求
3.2.3 数据处理模块设计
(1)脏数据处理
本文使用pandas对数据进行处理,具体步骤如下:
①取出数据
将数据从MySQL数据库中取出,首先创建数据库连接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论