APP下载

项目驱动教学在网络爬虫课程中的应用研究

2023-02-20徐华丽

高教学刊 2023年4期
关键词:高薪爬虫驱动

刘 清,徐华丽

(皖西学院,安徽 六安 237012)

大数据科学与技术是国家重点支持的新型特我专业之一,具有广阔的行业发展前景[1]。作为获取互联网数据主要技术手段的网络爬虫技术,自然受到广大师生的广泛关注[2]。

网络爬虫课程是大数据科学与技术专业的核心课程,具有区别于传统编程类课程的特点:课堂案例的爬虫代码有效期短,学生课后复习难度大。主要原因是教师在课堂上演示的爬虫程序都是针对特定网页编写的,只要目标网页的结构发生变化,演示程序就不能得到正确的结果。这一特点与C 语言程序设计[3]、Java 程序设计[4]等程序类课程具有明显的差异。因此,学生必须积极参与课堂教学,否则很难深入理解并掌握相关知识点。

鉴于上述特点,以教师为中心的知识点传授教学模式,必然面临诸多挑战:学生课堂参与度不高、学生课后复习难度较大及核心知识点难以深入理解等问题。

本文主要通过在网络爬虫课程中,设置难度适宜的项目,将传统知识点传授教学法与项目驱动教学法[5]有机结合起来:让学生自主设计项目解决方案,在项目实施过程中,主动发现问题并解决问题;进而全面提升学生的学习积极性、发现问题及解决问题的综合能力。

一、项目驱动教学法简介

为了进一步提升大学生的课堂学习效率并熟练掌握网络爬虫技术,本文采用项目驱动的教学方式,以学生为中心构建项目解决方案,综合提升学生的学习能力。

(一)项目驱动教学的涵义

脱离实际问题的、纯粹的知识点传授式教学,大多是枯燥与乏味的,不能引起大多数学生的学习兴趣。项目驱动教学法认为学习的动力来自解决生活中的问题;解决问题的过程便是构建知识框架、提升思维能力的学习过程。因此,项目驱动教学的核心理念就是让学生在项目实施的过程中,发现问题并自主解决问题,从而提升其学习积极性。区别于传统教学方法强调在“听中学”,项目驱动教学法则强调在“做中学”[5]。在项目驱动教学过程中,学生在项目问题的指引下,不断解决问题和发现新的问题,并最终完成整个项目任务。项目驱动教学是一种现代化的教学方法,现已广泛应用于多学科的教学实践中。

特别是在大数据时代背景下,绝大多数课程的核心知识点及常见易错问题,在互联网上都能找到原型。这就为项目驱动教学的实施提供了丰富的经验供学生学习与借鉴。

(二)项目驱动教学的特点

项目驱动教学在实施过程中,主要以小组为单位,组员之间分工明确并合作解决项目难题。项目驱动教学一般具有如下几个特点。

首先,项目的难易程度对项目实施效果有重要影响。教师要恰当选择学生感兴趣的话题,将核心知识点融入其中,并将之设计为功能较为完善、难度适中的项目。难度大的项目会挫败学生的自信心,让学生望而却步;难度过小的项目则很难引起学生的学习兴趣。难度适中的项目一般具有入手简单、多知识点相互关联等特点。这样的项目能够让学生产生解决项目的自信心,并在解决项目的过程中,不断挖掘潜在的知识点。

其次,学生是项目驱动教学的主体。在项目教学过程中,学生根据教师的指导,自主完成项目解决方案的设定、组员工作内容分工及关键核心问题的攻克等任务。学生遇到问题之后,可以选择与组员交流讨论,也可以借助网络搜索相关解决方案。教师只在必要的时候给予一定指导,以帮助学生顺利解决问题。

最后,学生的综合能力得到显著提升。在项目实施过程中,学生需要协商制定项目解决方案;需要根据学生特点,自主合理地分配项目内容;需要不断反思当前学习活动存在的问题,修正项目方案。因此,学生的合作能力、逻辑思维能力及交流与沟通能力等综合能力将得到较大的提升。

二、项目实施流程

项目驱动教学从教师设置项目开始到项目评价结束,主要包括以下几个过程。

(1)项目设计与理论教学。教师根据当前研究热点,选择具有实际应用意义的课题并将若干核心知识点融入其中,从而设计合适的项目,供学生学习。在项目实施之前,教师应当为学生开展相应的理论教学,让学生掌握一定的专业基础知识。

(2)解决方案制定与项目分工。首先,在教师的指导下,学生完成分组之后,重点协商并制定项目解决方案。在这一环节,学生需要按照软件生命周期,完成项目需求分析及解决方案的整体框架设计。其次,每个小组需要根据组员的特点及项目解决方案的结构,合理划分项目子模块,并合理分配任务。

(3)程序编码与测试。每个小组成员根据自己分配的任务,有针对性地开发相关程序,并测试程序的性能。在遇到较难的问题时,可以与组员讨论、在互联网上搜索相关案例经验或者咨询指导教师。

(4)小组答辩与教师评价。每个小组将组员的子程序模块组合为功能完善的作品,并撰写详细的说明文档。小组汇报时提供项目解决方案,项目实施过程中遇到的难题及对应解决方法。教师根据学生汇报情况,做出总结并给出若干建议,帮助学生认识自身的优势与不足,以进一步提升学生的学习兴趣。

三、项目改革实践

本文将项目驱动教学法应用于网络爬虫课程的实际教学活动中。通过问卷调查的方式,在大三学生普遍关心的小说自动下载、考研信息匹配、图书信息获取、商品比价及大学生就业分析等众话题中,选择教学项目:编写爬虫程序自动从拉勾网获取相关专业的招聘信息,并分析岗位、薪资、区域的分布情况。该python 爬虫教学项目的总体要求如下。

(1)两人一组,合作完成爬虫方案选择与代码编写。

(2)使用selenium 库模拟登录网页并获取相关数据。Selenium 库是python 爬虫常用的一种第三方工具,能够自动打开网页并模拟用户操作网页,实现元素定位、条件匹配等多种功能。

通过selenium 库自动获取拉勾网招聘信息的爬虫程序主要包括三个模块:网络数据采集与存储模块、数据处理模块及数据可视化显示模块。下面简单介绍各模块的功能及实现的技术细节。

(一)网络数据采集与存储模块

登录指定URL 链接地址,获取当前页的HTML 文档,然后通过Css_selector 选择器定位元素。定位当前页面职位信息的python 语句为:Jobs=webdriver.find_elements_by_css_selector('div',[class=“job_item__1_khT”])。Jobs 是一个迭代类型,包含当前页面所有职位条目,每个条目包含:职位名称、工作地点和薪资等信息。

获取到上述信息之后,可利用MySql 数据库存储工作信息。数据库相关的操作函数:MySQLdb.connect 函数(打开并链接数据库)、cursor()(获取游标)、cursor.execute(data)(插入数据记录)。

(二)数据处理模块

根据获取的数据,分别统计高薪工作的职业分布、区域分布及高薪岗位的共性要求。数据处理模块工作流程如下。

首先,通过python 指令链接数据库,并选择数据库及指定表格。主要函数包括以下几种。

(1)conn.select_db(database_name):选择指定数据库;database_name 是选择数据库的名字。

(2)cur.execute(“SELECT*FROM”+table_name):按名选择表格,table_name 为选择的数据表格名称。

(3)result=cur.fetchall():获取表格数据,最终返回的result 是一个元组类型变量。

其次,去除岗位信息中的多余空格,删除含有缺失信息的职位信息。String.strip()函数直接删除数据中的多余空格;在某些职位信息中可能缺失岗位的工资信息,因此需要删除该岗位信息:若job['salary']的类型为str,则删除。主要原因是:工作岗位的工资信息是一个浮点型数据,若缺失,系统会用空字符替代。

最后,将获取的招聘数据组织成列表job_list;在job_list 中的每个元素是一个字典类型的数据,包含属性:发布时间、岗位名称、月工资、工作地点、链接地址、招聘单位、职位要求与说明。

(三)数据可视化显示模块

在获取到相关招聘信息之后,本文对就业信息进行分类统计和数据可视化分析。

首先,统计月薪高于2 万的高薪招聘岗位,并统计其区域分布。高薪岗位—城域分布如图1 所示。

图1 高薪岗位—城域分布图

从图1 可以看出,月薪高于2 万的招聘岗位大多分布于上海、深圳、广州及北京,这四个国内的大都市,其中上海和深圳的高薪岗位占比高于21%,远高于国内其他城市。图1 还说明,苏州、杭州、成都和武汉等城市的高薪岗位占比低于北京等一线城市,这与城市的整体经济水平保持一致。

其次,统计计算机方向高薪岗位的技术分类及其占比。本文重点统计了计算机方向上的传统技术及大数据技术,区块链等新兴技术的高薪岗位比例,以引导大学生根据自身兴趣,及早准备相关技术知识,为后期择业做好充足准备。各技术的高薪岗位分布图如图2 所示。

图2 高薪职业的技术类型分布图

从图2 可以看出,区块链和大数据的占比最高,分别为29.5%和21.5%。这说明,在IT 行业,新兴技术的工资水平普遍高于传统的软件、程序类岗位。图2 还说明,传统技术之中,多媒体、软件设计仍然是较为受欢迎的就业选择。在C++、Java 及go 语言等主要的编程语言中,java 的高薪岗位略多于C++;go 语言是最近几年兴起的编程语言,现已超越python[6],成为仅次于C++的热门程序语言之一。

再次,根据每条招聘信息的岗位说明,本文利用词频统计,对高薪岗位(月薪高于2 万/月)要求的工作经验年限进行分类统计。详细的工作经验年限分布图如图3 所示。

图3 高薪岗位的工作经验年限分布图

从图3 可以看出,高薪岗位对工作经验的要求大部分集中于3~4 年和5~7 年,这两个时间区间内,分别占比44%和27%;而工作年限在7~9 年之间的高薪岗位占比不到5%。出现这一现象的原因主要包括两个方面:①计算机方向的技术更新较快,工作7~9 年之后,程序员的技术很难再次转型;②年龄限制:本科毕业约24 岁左右,工作9 年之后,约35 岁,程序员的中年危机现象一直较为严重。通过对图3 的分析,将有助于大学生做好个人职业的长期发展规划。

最后,本文还分类统计了高薪岗位对逻辑思维、团队合作和逆向分析等关键能力特征及其在职业招聘中的占比分析,结果如图4 所示。

图4 高薪职业的能力特征比例图

从图4 可以看出,在高薪岗位招聘中,逻辑思维能力和团队合作能力是最重要的两种能力,分别占比32.7%和33.4%;逆向分析及独立思考能力也是高薪岗位要求的重要能力;让人意外的是发现问题的能力占比不高,只有0.8%。主要原因应该是绝大多数岗位主要从事系统开发、维护等工作,而非科学研究型工作。

四、教学效果分析与评价

为了客观评价本次项目驱动教学的效果,本文在实施项目驱动教学之前以及项目实施之后,对学生各进行一次相关爬虫数据获取、数据清洗及数据可视化基础知识的测试,最终成绩对比见表1。

表1 项目实施前后,测试成绩对比表

表1 的测试成绩统计数据说明,在项目实施前后,测试分数在61~85 分之间的人数比例总体基本保持一致,波动幅度不大;变化最明显的是分数在60 分以下的人数占比由原来的21%缩小为5%。这说明,通过本项目的实施,大部分不及格的同学能够通过自我学习,掌握爬虫相关的核心概念及基础知识。另外一个明显的变化是高分成绩的学生比例迅速增加:85 分以上的学生由原来的2%提升至19%。这一现象充分说明,通过项目驱动教学,学生能够深入理解并且熟练掌握相关核心知识。

五、结束语

本项目成功将项目驱动教学法应用于网络爬虫课程的日常教学之中。通过挑选学生感兴趣的热门话题,让学生主动参与爬虫程序设计的教学过程,极大提升了学生自主学习的兴趣。本项目的爬虫程序重点获取了大学毕业生重点关注的招聘信息,并对高薪岗位进行了统计分析:高薪岗位城市分布、技术分布、工作经验及特定能力要求等。通过对高薪岗位的分析,增强了计算机方向毕业生对其职业生涯的宏观认知,对其未来职业规划具有积极的指导意义。从最终的测试成绩分析可知,通过本项目的驱动,大部分学生能够通过自主学习,较大幅度地提升其知识掌握水平,以及独立开发爬虫程序的能力。

猜你喜欢

高薪爬虫驱动
利用网络爬虫技术验证房地产灰犀牛之说
基于模糊PI控制的驱动防滑仿真系统分析
基于Python的网络爬虫和反爬虫技术研究
屈宏斌:未来五年,双轮驱动,砥砺前行
“高薪”真的高吗
轨旁ATC系统门控柜接收/驱动板改造
大数据背景下校园舆情的爬虫应用研究
噜噜拒绝“高薪”
大数据环境下基于python的网络爬虫技术
蓝领“高薪”背后的尴尬