陈冬冬 刘海龙
信息技术与经济社会的交汇融合引发了数据迅猛增长,大数据的发展和应用逐渐体现并影响社会生活的方方面面,各大高等院校、职业院校相继开设大数据相关课程,开展大数据知识普及,建立多层次、多类型的大数据人才培养体系。中职阶段开设大数据课程,在探索大数据应用和实践方面有积极推动作用,但同时也面临课程和教学实践的实际问题。中职教育作为职业教育中重要的一环,其课程与社会、经济、技术发展的联系紧密且直接,或者说科技的发展引导着职业教育的发展,从职业教育课程发展可以发现,从传统强调知识重要的“知识本位”,逐步发展到强调理论服务于实践的“能力本位”[1],课程设计和开发中,以人为本理念深入实践,随着中外合作项目引进了基于工作分析的课程开发方法并进行了大量实践,像CBE(Competence Based Edu-cation)理念 、DACUM(Developing a Curriculum)课程开发方法以及德国双元制职业教育采用的课程,给职业教育课程开发带来新思路,发展趋势也侧重职业能力培养,强调基于实际场景或“基于工作的学习”。[2]
在产教融合的大背景下,学以致用和协同育人的理念不断深入[3],中职大数据课程的开设以社会需求为导向,更加务实和产业化。内容涉及大数据整条产业链,包括数据采集、数据清洗、数据标注、数据分析、数据展示等方面[4],其中数据采集是大数据分析处理的重要步骤,数据采集主要使用基于python编程的“网络爬虫”方式收集数据,可以帮助我们自动地进行信息的获取与筛选,因实操简单、效果明显,在教学过程中学生兴趣度和参与度较高,可作为大数据课程在中职阶段开设。
数据采集教学过程中,数据采集对象或目标网站一般具有综合性和复杂性,往往需要多种技术手段和工具组合使用,需要规范的计算思维将问题进行分解分析,制定合适方案才能解决目标需求。在常规教学过程中,访问外部网络进行数据采集,往往会面临一些棘手的问题,比如因为网站技术更新或反爬机制的限制,导致数据采集受限或被禁止,同时也有可能涉及法律问题,比如学生爬取非公开数据或者无限制地请求对方网站,导致服务器压力提升,影响网站的使用或使其崩溃,这些问题在中职教学过程中会经常遇到,任何一个原因都会对教学产生阻碍或涉及网络安全问题。有相关新闻报道,某公司员工爬取非法数据,导致面临牢狱之灾。在保证数据采集正常教学的同时,又能提供一个安全可靠的网络环境是我们的目标,基于此,根据课程特点以及结合中职学生认知能力,设计一个能够满足各方需求的目标网站变得很有必要。
本文基于教学实际情况及中职学生特点,结合数据采集在实际应用场景,对数据采集所需应用技术和工具进行教学分解,映射数据采集课程知识点,形成“工作任务标签”,同时考虑在实际教学过程中,因技术变革、网络安全等问题,导致数据采集(爬取)过程受阻的情况,通过模块化设计,使用开源框架Django搭建满足数据采集的安全可控目标网站,对教学产生实际意义。目标网站的本地化部署,对数据采集课程的专项训练提供支持,从而形成数据采集专业知识模块闭环。
一、理论指导
1.计算思维
现实中遇到的问题一般不会是单一知识点能解决,数据采集时面临各种情况,如何查找合适目标网站,如何对采集对象进行分析以及针对具体情况使用何种技术方案,这些都需要综合考虑,在进行数据采集之前做好规划。面对非标准化问题,计算思维能够屏蔽情境中重复、无用的信息,保留问题的关键部分,对已有的数据进行分析并能够将一个复杂的问题分解成若干个已知的小问题,在编程教学中,将需要解决的问题用计算机语言或程序表达出来,以便计算机自动执行[5-8]。
2.BAG分析指导
“典型工作任务分析法”(BAG,德语BeruflicheAufGaben的缩写)注重学生实践操作能力的培养,它的核心内容是基于现实生产环境,综合考虑学习者的全面发展,将学习任务分解成一定数量的典型工作任务。通过引入“发展性任务”(developmental task)“发展性结构课程”到“从初学者到专家”(from novice to expert)發展范式等理论,实现了职业教育课程从学科范式向以能力发展逻辑范式的转变,从而进一步提升实践性知识的认知。[2]通过BAG分析,将数据采集过程中应用到的知识点,根据典型性进行提取和切分,最终体现在目标网站的开发上,同时目标网站又反过来指导数据采集的专项训练。
二、设计原则
1.科学性
数据采集目标网站不仅是常规网站的设计与开发,应结合教学理论和系统工程进行开发,教学属性要突出。
2.安全性
一方面是网站本身安全稳定,不易被攻击;另一方面能够接收学生访问请求,不涉及网络安全和法律问题。
3.全面性
应满足数据采集教学内容,涉及现阶段数据采集技术,数据爬取基础内容、反爬技术等。
4.模块化
用户请求接口规范,响应及时,易于操作;考虑中职学生认知特点以及教学规划,对知识点进行难易划分,模块之间耦合度小。
5.开放性
充分考虑跨平台操作,选择Windows、Linux、ios等系统都可以运行语言,考虑技术发展速度比较快,平台预留空间满足后续设计。
三、开发工具
基于以上设计原则,开发工具选择python编程语言,同时使用python开源框架Django进行网站开发,为保障网站安全和稳定,将Django站点本地部署。
1.以OpenStack为核心的本地云平台管理,通过灵活配置合适环境,发挥OpenStack强大虚拟能力,满足Django网站本地部署需求。
2.python作为大数据、人工智能等新技术主流开发语言,因其语言简易、模块丰富等原因应用较普遍,Django是一个开源免费高级python框架。用python编写,遵循模型——视图——模板架构模式。我们可以使用它来更快、更轻松地开发优质的Web应用程序。[9]
四、整体结构
结合数据采集教学知识点,进行模块化封装设计,同时相互之间耦合度较低,能够满足日常教学安排(图1)。数据采集的程序网络爬虫主要涉及以下内容:爬虫基本结构、特定数据提取、批量数据爬取、模拟登陆、破解验证码、动态数据获取、自动化操作、反爬虫策略等。[10]
五、开发实现
本文开发使用Django开源Web框架(图2),Django采用MVC(Model View Controller)的软件设计模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,而不需要重新编写业务逻辑。因此,在开发数据采集目标网站时,可以根据教学和爬虫特点进行设计页面,设计简易内容管理网站就可以满足基本需求。[11-14]
1.环境搭建
快速搭建网站环境,使用virtualenv创建独立程序环境,安装Django第三方库,创建网站项目minicms。
2.创建应用
Django里面通过应用来规划内容,每一个应用对应一个功能点。先创建一个信息页面news,添加 news 到 settings.py 中的 INSTALLED_APPS 中。
3.设计模型自动生成数据库
Django跨平台支持各种数据,网站最初阶段可以使用自带数据库sqlite,模型负责与数据库交互,处理与数据相关的所有事务,在models.py文件中完成。先设计其中一个数据库表内容,栏目和文章,栏目具有名称、网址、简介等字段,文章具有标题、作者、网址、内容等字段。
4.数据库数据填充
数据库表已经生成,但数据库中表需要输入,可以结合python脚本特点,编写自动数据导入脚本,一键导入数据。将代码另存为create_demo_records.py文件,执行python create_demo_records.py 一键导入数据。
5.完善网站后台
Django自带后台数据管理系统,通过简单设置就可以启动,创建网站超级管理员,用于网站安全登录。通过命令打开网站后台,python manage.py runserver。
6.前端显示
后台数据已经填充,需要将数据传递给前端,通过Django中url可以优雅访问网址,使用中间模块系统,动态生成和调用数据库数据进行前端显示。
7.模块设计
通过Django前后端设计方法,将登录界面、批量数据分页等子页面进行分别开发,满足不同知识点对应内容。
六、结语及展望
基于计算思维及BAG典型任务分解理念和方法,将大数据课程中数据采集内容进行合理分解,同时通过分析中职大数据课程中数据采集所面临的一些问题,提出自建目标网站的解决方法,在设计和开发过程中,对目标网站进行综合规划,将教学知识点对应网站不同页面内容,针对数据采集所涉及知识点进行专项训练,能够解决实际使用问题。后续会结合新技术和需求,不断完善网站内容,扩大网站的使用范围。
参考文献:
[1]孙琳,徐桂庭.我国中等职业教育教学改革发展的脉络与变迁——基于教学政策文件的分析[J].职教论坛,2015(03):4-15.
[2]赵志群.我国职业教育课程模式的发展[J].职教论坛,2018(01):52-57.
[3]吴媛.基于产教深度融合的人才培养共同体的构建研究[J].电脑知识与技术,2020(16):149-150.
[4]欧阳智.大数据专业下的数据采集与处理教学改革探讨[J].大数据時代,2018(05):18-20.
[5]陈鹏,黄荣怀,梁跃,张进宝.如何培养计算思维——基于 2006—2016年研究文献及最新国际会议论文[J].现代远程教育研究,2018(01):98-112.
[6]谢忠新,曹杨璐.中小学信息技术学科学生计算思维培养的策略与方法[J].中国电化教育,2015(11):116-120.
[7]牟琴,谭良,周雄峻.基于计算思维的任务驱动式教学模式的研究[J].现代教育技术,2011,21(06):44-49.
[8]李馨.信息化教学设计的理论与模式研究[M].长春:东北师范大学出版社,2015.
[9]魏晓婷.面向中职信息技术教师的《Python程序开发》项目课程开发与实施[D].广东技术师范大学,2019.
[10]庄培杰.Python网络爬虫从入门到实践[M].北京:电子工业出版社,2019.
[11]齐俊峰.基于Django的校园管理系统的分析与开发[D].兰州大学,2013.
[12]韦立梅,苏兵.Django框架下Python网站开发过程综述[J].电脑与电信,2019(10):54-56.
[13]王友钊,黄静.Django开发宝典[M].北京:清华大学出版社,2017.
[14]谢建华,梁杰华,郑剑.基于Django实现四方博客[J].电脑知识与技术,2019(23):51-54.
[基金项目:2020年度广东省教育研究院第二批STEM教育专项研究(GDJY-2020-S-b064),项负责人:陈冬冬;东莞市教育科研“十三五”规划2019年度课题(2019GH196),项目负责人:刘猛。]
责任编辑 何丽华