基于微信小程序的求职招聘系统的设计

2022-05-30 10:48圣立明李超常京
电脑知识与技术 2022年31期
关键词:微信小程序爬虫

圣立明 李超 常京

摘要:相对于传统的线下求职模式,线上求职招聘具有很大的优势。它打破了传统招聘方式对时间和地域的限制,降低了求职招聘的成本,扩大了招聘范围。基于此,开发了基于微信小程序的求职招聘系统,客户端使用微信小程序,服务端使用Java开发框架SpringBoot+MyBatis-Plus,同时,采用Python的Scrapy网络爬虫框架对多个企业招聘网站进行职位信息爬取,提供更加丰富最新的职位信息,为求职招聘提供便利。

关键词:微信小程序;求职;Java;爬虫

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2022)31-0049-04

1 概述

随着科技的发展,互联网的开发与综合应用已经逐渐深入人心[1],加之新冠肺炎疫情的反反复复,对招聘行业产生了比较大的影响,其中2020年线上招聘以108亿的市场规模成为招聘行业的主流方式。

线上网络招聘打破了传统招聘方式的很多不足,将招聘工作流程网络化,有效减少了公司人事部门的工作量,提高了工作效率[2]。同时,也为求职者提供了多样性的岗位选择,节省了时间和成本。

微信小程序是一种在微信平台上开发应用系统的新技术,2017年上线到现在,已经拥有庞大的应用开发数量[3]。

基于此,开发一个微信小程序的求职招聘系统。求职者登录小程序进行职位筛选、简历投递、与HR沟通,公司HR登录系统进行简历筛选,联系感兴趣求职者,使得企业可以更加方便快捷找到适合自己的人才,求职者能够根据自身的需求获得适合自己的岗位。

2 系统架构

本系统架构如图1所示。

前端使用的是微信小程序开发,相比于传统的App开发,它依托微信App,不需要下载安装即可直接使用,用户扫一扫或者在微信搜一下就可以打开应用, 开发适配成本低,可以实现跨平台操作,无论是何种操作系统或者手机型号,微信小程序实现了平台的适配,开发者只需要按照开发文档来做即可。同时,微信上会有用户使用过的小程序记录,这样加大了用户对小程序的依赖,既实现对应用的触手可及,又实现了对手机内存的节省[4]。经过近几年的发展,微信小程序已经拥有海量用户,其应用已经覆盖了多个行业。

后端使用的是Java开发框架SpringBoot+MyBatis-Plus,自动配置,简化开发[5],节省了许多传统Spring框架需要的xml配置文件,减少了冗余代码,MyBatis-Plus则是MyBatis的增强版,在MyBatis的基础上只做增强不做改变,为简化开发,提供效率而生。

数据库使用的是MySQL数据库,作为当下主流的关系型数据库,技术成熟,开源免费,使用方便。

同时,采用Python的Scrapy网络爬虫框架对多个招聘网站进行职位信息抓取、解析、存储,并使用Python定时任务框架APScheduler实现自动定时爬取数据,尽可能及时更新相关职位的最新消息。

3 系统设计与实现

3.1 系统功能介绍

本次开发的求职应聘小程序主要服务于求职者和公司HR,主要功能有:

1) 小程序登录功能

对于系统每一位登录用户都应该有属于自己的唯一凭证,系统通过该凭证来识别不同的用户,同时判断用户是否有权限进行招人,也可以限制与个人信息相关的功能只有在登录状态下才可使用,从而保证个人信息安全。

2) 职位搜索功能

职位搜索功能是一个开放的功能,不要求一定要登录之后才可访问,求职者可以在这里浏览职位。

3) 简历管理功能

求职者登录后,可以通过此功能对自己创建的简历进行增加、修改、查询、删除操作。创建简历时,可以设置简历的状态为公开或者私有,公开的简历可以被所有HR查看到,而私有的简历只有自己才能查看;查询简历时,如果简历有被HR收藏并设置兴趣指数,求职者也可以查看到HR对自己简历的兴趣指数,看看自己的简历是否受欢迎。

4) 投递简历功能

求职者在找到合适的职位并登录后,可以选择简历进行投递。

5) 投递记录查询功能

求职者登录之后,可以对自己投递过的职位记录进行查看。

6) 收藏简历功能

该功能是服务公司HR的,需要HR登录之后才可以使用,HR可以在公共简历池中浏览简历,可以对自己感兴趣的简历进行收藏,并设置一个兴趣指数,反馈给求职者。

7) 设置简历兴趣指数

该功能也是服务HR的,需要HR登录之后才可以使用,HR可以在收藏夹中查看自己收藏的简历与对应的兴趣指数,也可以对简历重新设置兴趣指数,对已经不感兴趣的简历也可以进行取消收藏的操作,同时也可以查看对应简历的详细信息。

该小程序的整体功能结构如图2所示。

3.2 前端页面设计

前端采用微信小程序原生MINA框架,该小程序共包含11个页面,其中3个tarBar页面(首页、求职、我的),如表1所示。

1) 首页设计

主要有轮播图区域与招聘企业区域两块区域,其中轮播图部分采用swiper组件实现,在js文件中调用后端API接口获取轮播图数据,使用setData()方法將获取到的数据保存到data中,最后使用模板语法将数据渲染到wxml页面,数据获取、保存、渲染核心代码如下:

//js数据获取与保存:

wx.request({

url: 'http://127.0.0.1:4021/api/v1/recruit/banners',

method: "GET",

success: (res) => {

this.setData({

bannerList: res.data.data.bannerList

})

}})

//wxml页面渲染:

招聘企业信息部分则采用flex布局实现,结合navigator组件实现点击跳转到相应招聘企业的职位搜索页面,数据获取、保存、渲染都与轮播图部分的实现方式一致。

2) 个人中心页(我的)的页面设计

该页面先渲染了登录按钮,用户点击登录按钮后,可以选择进行求职或者招聘的操作,然后请求后端登录接口进行权限验证,根据用户是否属于某企业,只有公司HR才可以进行招聘操作,通过权限验证之后,会调用wx.getUserProfile与wx.setStorge方法获取并保存用户个人信息到数据缓存中。

系统根据不同角色去动态渲染不一样的导航栏,若是公司HR,则动态渲染公司HR的导航栏,包括“简历”与“我的”,我的页面有“收藏夹”功能;若是求职者,则动态渲染求职者的导航栏,包括“首页”“求职”与“我的”,我的页面有“我的简历”与“投递记录”功能。

对于不同的用户登录小程序,如果只使用微信提供的wx.getUserProfile方法,只能够获取登录用户的个人信息,考虑到随着用户剧增,难免会出现用户重名,从而导致出现同名用户对同一份个人信息数据进行操作,进而出现数据不一致的情况。本系统增加调用微信提供的wx.login方法,并且在后端服务器中通过code临时登录凭证去请求用户接口,换取用户的唯一凭证与会话密钥,在小程序上根据token区别不同用户,在后端中根据唯一凭证区别不同用户。用户的个人信息通过wx.setStorge方法保存到数据缓存中。

3.3 后端以及数据库的设计

本系统采用三层架构作为招聘系统的基本框架。

1) 控制层

与前端进行数据交互,小程序通过wx.request向后端API接口发起请求,控制层则负责接收请求,并做出响应返回给小程序,其间的请求处理都是交予服务层去实现的。

2) 业务层

业务层主要进行业务处理请求,比如从小程序传递来的数据格式与数据库所需格式不匹配时,则需要对传递来的数据格式进行转换与数据库匹配等。

3) 数据层

数据层主要是与数据库进行交互,比如需要根据投递记录ID查询投递记录信息,查询投递记录信息,包括职位信息、简历信息,则需要查询数据库中record、resume、position三张表就可以通过数据层实现。

数据库采用的是MySQL数据库,共设计了8张表,主要包括用户信息、简历信息、职位信息、投递记录、企业信息、企业HR信息、收藏信息、轮播图信息共八个实体对象。

该系统职位信息的提供通过Python的Scrapy框架爬取获取,Scrapy作为一个开源免费的爬虫框架速度快,功能强大,能提供结构性数据。其中Items负责需要抓取的数据项,Spider负责抓取与解析数据,在Pipelines中设计管道对数据进行清洗并存储爬取内容。同时,通过Python的APScheduler定时器框架实现自动定时爬取,关键代码如下:

def start_scrapy():

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

subprocess.run("scrapy crawlall".split(), shell=True)

def set_crawlCycle(dayNum):

# 一天有86400s

return float(dayNum)*86400

if __name__ == '__main__':

scheduler = BlockingScheduler(timezone='Asia/Shanghai')

# 设置爬取周期

cycle = input("设置自动定时爬取周期:")

scheduler.add_job(start_scrapy, 'interval', seconds=set_crawlCycle(cycle))

scheduler.start()

3.4 部分功能设计实现

1) 职位搜索以及投递功能

包含搜索框与结果列表两大区域,在不输入搜索条件时,会显示所有职位信息;输入搜索条件后,会根据条件对职位信息进行筛选后再显示,效果如图3所示:

点击“申请”按钮后,进入选择简历页面,选择一份简历后,点击“投递”按钮,进行简历投递,投递成功会弹窗提示用户,然后跳转到投递记录列表页,选择简历頁面弹窗提示效果图如图4所示。

2) 个人中心功能

点击登录按钮,会弹出选择登录角色的选择框,选择角色经过后端权限验证后,会弹窗询问是否授权获取信息,允许后,若是求职者登录小程序,可以查看“我的简历”与“投递记录”等信息;若是HR登录小程序,可以查看“收藏夹”信息,导航栏也会动态切换到HR的导航栏信息,求职者与HR登录后的效果图如图5所示。

3) 兴趣指数设置功能

HR可以寻找自己满意的简历信息进行收藏操作,效果图如图6所示。

同时,公司HR在登录系统后也可以通过点击“收藏夹”可以跳转到收藏夹页面,页面包含每项简历信息,可以对简历进行重新设置兴趣指数。

4 结束语

基于微信小程序的求职招聘系统降低了求职招聘的成本,使得公司HR部门可以更加方便快捷找到适合自己的人才,而求职者能够根据自身的需求筛选出合适的工作岗位。

本系统程序页面设计丰富,样式精美,交互性好,具有良好的容错性,前端采用微信小程序,后端使用SpringBoot+MyBatis-Plus搭建,耦合度低,API接口地址丰富,功能完备,程序前后端交互。同时,相对比其他求职应聘的小程序,本小程序有更加优质的职位信息资源,数据来源丰富可靠,通过Python网络爬虫定时对各企业招聘信息进行爬取,能及时更新相关职位的最新消息,具有实际应用意义。

参考文献:

[1] 董彦喆,熊琴,王梦琪.大数据时代我国网络招聘研究综述[J].中国市场,2021(7):82-84.

[2] 唐韵清,王一诺,马瑞,等.基于Web的网上求职招聘系统[J].网络安全技术与应用,2021(6):29-31.

[3] 高洪濤.从零开始学微信小程序开发[M].北京:电子工业出版社,2017.

[4] 微信公众平台开发者文档[EB/OL].[2021-12-23].https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html.

[5] Cay S.Java核心技术(卷2) :高级特性(原书第9版)[M].北京:机械工业出版社,2014.

【通联编辑:谢媛媛】

收稿日期:2022-05-15

基金项目:2022年广州城市理工学院教学质量与教学改革工程(课程类)项目

作者简介:圣立明(1985—) ,女,广东广州人,助教,硕士,研究方向为计算机应用技术;李超(2000—) ,男,广东广州人,本科在读,研究方向为软件开发;常京(1985—) ,女,广东广州人,助教,硕士,研究方向为软件开发。

猜你喜欢
微信小程序爬虫
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
利用爬虫技术的Geo-Gnutel la VANET流量采集
当图书馆遇上微信小程序
大数据环境下基于python的网络爬虫技术