浅析正则表达式在教材信息收集中的应用
2016-07-22梁小鸥杨咏
梁小鸥+杨咏
摘要:正则表达式在许多领域有广泛的应用,而用于教材信息的收集中的情况较少。该文针对教材管理过程中的教材信息收集、教材征订环节开发出教材信息收集系统,其中可以利用正则表达式抓取购书网站上的教材信息,从而确保数据的有效性,提高工作效率。
关键词:正则表达式;教材;信息收集
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)16-0156-02
1 概述
近年来,随着高校招生规模的不断扩大,教学改革的不断深入,教学管理系统建设成为各高校信息化建设的核心。教材管理是教务管理中的一个重要环节,教材征订、教材统计等成为了艰巨而繁琐的工作,教材管理的系统化是教学管理人员的迫切需求。目前市面上很多的教学管理软件都有涉及教材的管理,针对教材统计都有相应的功能模块,但普遍存在一个技术瓶颈——教材信息库无法满足实时更新的需求。
当教材管理系统中的教材数据库无法提供教师所需征订的教材信息时,则需教师手动输入教材基本数据。然而教材基本信息内容较多,人工录入教材信息工作效率较低,系统难以确保准确性。本文就现有的教材管理系统中的瓶颈问题——教材信息采集进行研究,开发出了教材信息收集系统,找到解决教材基本信息规范采集的方法,同时精简教师录入征订教材的操作步骤。
2 教材信息采集系统设计思路
本系统通过教学任务关联教材征订,在教材征订环节,除了拥有本地查询教材信息,手动添加教材信息的功能外,还借助成熟的购书网站(如当当网)实时更新的书籍信息库进行教材的查询、选用。任课教师在购书网站查找到所需教材,进入该教材的详细介绍页面,并将此页面的URL在系统中进行提交,系统获取到指定网页的所有信息,结合正则表达式提取有用的教材数据:教材名称、作者、出版社、ISBN等,并存入教材数据库,从而确保了教师录入的数据有效性、完整性和准确性,提高了录入教材信息的效率。
3 相关技术
什么是正则表达式?正则表达式(Regular Expression)是定义一组字符串的一系列字符和符号,从而快速方便地实现字符串的模式匹配,以及对输入域中的值进行数据验证。
由于PHP拥有强大的功能,支持多种数据库,因此笔者选用PHP及其内置函数进行编程,实现教材管理中的教材信息收集功能。系统设计通过URL抓取网页内容,作者经过对PHP几种常用的抓取网页内容的方法(Curl、fopen、file_get_contents)进行对比,最终选用性能较高的Curl方法来访问、抓取网页。Curl是一个利用URL语法规定来传输文件和数据的工具,支持多种协议,如HTTP、FTP、TELNET等。系统建立CURL请求的基本步骤:
$url=@$_POST['url'];//获取提交的URL。
$ch = curl_init(); //初始化curl_init()。
curl_setopt ($ch, CURLOPT_URL, $url); //PHP取回的URL地址作为字符串。
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //如果获取URL成功只将结果返回$ch,不自动输出任何内容,如果失败返回FALSE。
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); //设置连接等待时间,当前等待10秒。
$content = curl_exec($ch);//执行并获取结果。
获取URL指定网页的内容后,作者利用正则表达式使用一系列的特殊字符构建匹配模式,然后把匹配模式与网页内容进行比较,过滤得出教材的基本信息。通过对购书网站中书籍产品页面源代码的查看,得知页面的meta标签中都有包含所介绍书籍的名称、ISBN号、出版社的信息,使用变量$metaskey存放书籍基本信息的meta标签内容,利用explode切开meta标签中“,”左右的字符串,trim去掉字符序列左边和右边的空格,通过array_map返回用户自定义函数作用后的数组,再用array_filter回调函数过滤数组中的元素。
将meta中的关键字进行截取:
array_filter(array_map('trim',explode(',',$metaskey)));
然而meta中的信息并不完整,个别字段如作者姓名和出版时间并不包含在其中,而是存在于网页的正文。面对网页正文中上千行代码,作者使用正则表达式通过设置关键字进行正则匹配,能够快速提取出相关数据。以出版时间为例,在网页中“出版时间”所在的代码段为:“出版时间:2015-4-1”,因此正则表达式则可定为:(?<=出版时间:).*?(?=<),表示匹配在第一次出现“出版时间:”字样后直到出现第一个“<”符号中间的内容(不包含“出版时间:”和“<”)。
4前期数据准备工作
教材信息收集主要使用三个数据表:教材信息表、教学任务表和教材征订表。教材信息表保存教材的基本信息:教材名称、作者、出版社、ISBN等;教学任务表中指定每个学期各专业班级所开设的课程信息、任课教师等;教材征订表则主要存放每条教学任务中对应教材的基本信息。
5教材信息采集系统的实施
任课教师登录进入系统,查看到自己的教学任务信息,通过对教学任务课程的点击进入到教材征订界面,对所授课程的教材进行征订,并将结果显示在网页中供任课教师确认或修改。教材管理人员即可在后台导出所有教材征订的精准信息,以便后续的统计、汇总工作。
教材征订途径有三种:一、使用系统教材库中已经存在的教材信息,通过本地查询找出所需教材进行选用征订。二、当教材库中没有该教材信息,则可以通过表单填写教材信息,系统将填入的数据进行规范校验,同时保存相关数据至教材信息表,教材征订表。三、借助成熟的购书网站(如当当网)进行教材的选用,任课教师查找到该教材的详细介绍页面,并将此页面的URL作为教材信息在系统中填报,系统自动将提取出的教材基本信息完成教材征订,并将最新数据存入数据库。通过以上三种途径确保教材征订时的数据有效性、完整性和准确性。
6总结
此系统是基于广东工程职业技术学院校级课题《高职院校教材管理模式信息化探索与研究》(编号:KY2014014)的研究方向,采用PHP语言编写,结合MySQL数据库开发的教材信息采集系统。该系统成本低、兼容性强,并结合我校实际情况,任课教师通过网页查看教学任务的同时提交教材的征订,操作简单容易掌握。经实际应用表明,它能有效地将教学管理者从教材征订环节的工作中解救出来,减轻他们的工作负担,提高其工作效率,取得了课题研究预期的效果。
参考文献:
[1] 胡军伟,秦奕青,张伟.正则表达式在Web信息抽取中的应用[J].北京信息科技大学学报:自然科学版,2011(6).
[2] 张静,张妍.正则表达式及其在信息抽取中的应用[J].电脑知识与技术,2009(15).
[3] 黄进.校本教材在高职院校中的作用探讨[J].广东教育:职教版,2014(8).