APP下载

以爬虫为兴趣牵引的Python教学方案探索与实践

2019-01-23肖皇培

软件 2018年12期
关键词:爬虫程序设计案例

王 芳,肖皇培



以爬虫为兴趣牵引的Python教学方案探索与实践

王 芳,肖皇培

(华南理工大学广州学院 计算机工程学院,广东 广州 510800)

本文从Python程序设计语言课程教学方案设计、案例设计展开研究,给出一套可行的“爬虫牵引兴趣,案例驱动学习”的Python教学方案,该教学方案适用于计算机或软件类专业(方向)的本科Python语言课程教学。

爬虫;Python;教学模式;案例教学

0 引言

Python是当今最受欢迎的语言之一,它的PYPL指数[1](Popularity of Programming Language Index)在今年5月已超过Java,跃居第一位,如图一。Python 语言是最接近自然语言的语言,是最接近人工智能的语言。人类天才棋手被人工智能打败表明计算机技术已进入人工智能阶段。AlphaGo背后的程序,有部分是用Python编写的。AlphaGo在全球产生巨大影响力的同时,其背后的 TensorFlow技术开源并快速应用于机器翻译、自动驾驶、唇语识别等多个领域。Python在网络爬虫、数据分析、AI、机器学习、Web开发、金融、运维、测试等多个领域都有不俗的表现。教育部考试中心也于2017年10月11日发布了“关于全国计算机等级考试(NCRE)体系调整”的通知,决定自2018年3月起,在计算机二级考试加入了“Python语言程序设计”科目。近几年来国内也有不少学校陆续开设了Python程序设计课程。程序设计课程教学改革不仅仅是选择一种语言,更应该是建立一种易于理解、提升兴趣的教学形式[2]。Python语言符合计算机技术发展阶段。在新工科建设背景下,只有面向未来的教学内容才值得进行大范围、深刻的教学改革[3]。

在以往的程序设计语言类课程中,往往将大量学时用于编程语言的语法和所附加功能的教学上,而并未训练学生解决实际问题的思维逻辑,难以引发学生学习兴趣,难以保持学习热情。Python 语法简洁,程序逻辑设计纯粹,易上手,有助于保护学生的学习热情。Python 语言有十万余第三方库,其中部分库适合初学者进行程序设计探索,其易调用性和实用性也容易引发学习兴趣。

图1 PYPY指数

1 以爬虫为兴趣牵引

1.1 Python爬虫简介

爬虫[4]通常指的是网络爬虫,就是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。一般是根据定义的行为自动进行抓取,更智能的爬虫会自动分析目标网站结构。它还有一些不常使用的名字,如:网络蜘蛛(Web spider)、蚂蚁(ant)、自动检索工具(automatic indexer)、网络疾走(WEB scutter)、网络机器人等。很多人将Python和爬虫绑在一起。与Java、Php等静态编程语言相比,Python 拥有更丰富的第三方库,写一个简单的爬虫只需要十几行代码。

学习爬虫是一件很有趣的事。我们想从互联网中获取一些自己感兴趣或需要的东西,就可以利用爬虫技术。我们使用爬虫获取更多的数据源,这些数据源可以按我们的目的进行采集,去掉无关数据,保留感兴趣的数据。兴趣是最好的老师,我们学习跟兴趣有关的知识不但学的快记的牢,而且有成就感。简单来说,我们学会了爬虫编写之后,就可以利用爬虫自动地从互联网中采集我们感兴趣的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,就像实现了个人的搜索引擎。我们还可以对这些爬取到的数据进行更深层次的数据分析,获取更多有价值的信息。当然,信息的爬取、存储、分析、相关性计算等方法,都是需要我们进行设计的,而爬虫技术主要解决信息获取的问题。

随着大数据时代的来临,爬虫技术的应用越来越广泛,各行业对爬虫工程师的需求量越来越大,爬虫工程师成为紧缺型高薪人才,并且拥有很好的发展空间。所以掌握爬虫技术对学生来说是非常有吸引力的。

1.2 爬虫的自我修养

学习Python爬虫需要具备一定的网络基础和前端基础。我校将《Python语言》作为专业选修课程开设在软件工程专业大三学生的第一学期,本专业的学生已经在大二学习过网络和前端基础的相关课程,已经基本掌握了http协议、request/response流程、html网页结构、JS/Ajax请求过程、css定位/选择器等知识。我们将在本课程中教授Python基础知识以及爬虫技术常用的如scrapy、requests、beau­tifulsoap、re等第三方库的使用。通过具体案例学习和体会爬取静态网站和动态网站的过程。

2 爬虫牵引的Python语言课程教学方案

2.1 Python课程教学方案

我校软件工程专业是在学生已经先修了C和Java之后再开设的Python课程,除了简要介绍Python作为程序设计语言的基本知识点外,更多要考虑让学生了解Python语言的特点。而Python作为专业选修课开设在大三,更应该注重Python的实践应用。针对我校软件工程专业学生,结合Python语言的特点,我们在教学过程中轻语法、重实践,加强实际问题求解能力的培养,选择以网络爬虫技术为应用目标来开展Python课程教学,适当增加实践学时和实践训练量,从而达到提升学生解决实际问题能力的目的[5]。

我校软件工程专业选修课《Python语言》的课程教学方案分为两个部分:第一部分是Python编程基础。主要讲解Python语言基本语法,包括基础数据类型、基本运算、控制流、高级数据类型、函数、类与对象等内容。重点讲解对列表、元组、字典的操作,列表推导式,文件读写。第二部分是面向能力培养的网络爬虫技术。围绕一系列第三方库培养学生掌握网络爬虫的实战能力。通过讲解 requests库、beautifulsoup库和re库,培养学生Web爬取和信息提取的能力;通过讲解numpy库、matplotlib库和pandas库,培养学生数据处理和展示的能力[3]。

图2 Python课程教学方案

如图2所示,从第一堂课就开始介绍并展示爬虫,以牵引学生的学习兴趣。第一部分“Python编程基础”讲解过程中要配合一定的基础练习,以让学生熟悉Python语言的语法特点。在高级数据类型、数据存储章节主要讲解的知识点都是为第二部分“网络爬虫技术”的内容服务的。开始第二部分“网络爬虫技术”之前,要求学生复习网络和前端相关知识点,也可以设计2个学时带领学生有针对性地复习。第二部分“网络爬虫技术”采用案例教学法,以抓取“豆瓣电影”分类页面内容为例来讲解数据的爬取、提取、整理及展示过程。最后给学生布置课后实战练习:仿照课堂上的案例抓取并分析招聘网站数据。

2.2 爬虫技术详细教学方案

网络爬虫技术讲解过程中,偏重讲解网络爬虫技术的原理和第三方库的使用。引导学生在理解不同网站和页面的爬取原理后,对案例进行消化和吸收,复习和补充各种学生认为有必要掌握的理论知识,在主动学习的过程中进一步加深了对知识的理解。下图展示了爬取数据时分析数据源的详细流程。

如图3所示,在完成数据爬取后,是对数据的分析、整理和展示。此时,第三方库的引入可以极大地简化问题求解和学生学习的难度,培养和引导学生尽可能利用第三方库进行编程,用最简单的方法快速解决问题[6]。除了图3中提到的库外,常用的还有selenium库用于模拟浏览器、lxml库用于xpath、scrapy库已发展成一个成熟的爬虫框架。

图3 爬取过程分析

3 结语

经过两轮的探索和实践,以及对课程内容和授课方式的不断细化和调整,我校软件工程专业已初步形成了以爬虫为兴趣牵引的Python教学模式。从课程评价、学生项目质量等方面看,实施效果较好,可作为同类院校计算机或软件类专业高年级Python课程的教学方案。

Python在良好的开源生态下竞争激烈且发展迅速[3]。例如,urllib、requests、scrapy 等第三方库都提供网络爬虫功能,随着竞争深入,requests 库成为简单页面爬取的主流工具,scrapy库成为可靠爬虫框架,urllib 被逐步淘汰。以此为缩影,面向能力培养的案例教学形式对教师也提出了更高的要求,要求教师不断吸收新技术新知识,不断更新教学案例,不断补充教学内容。

[1] Popularity of Programming Language Index[EB/OL]. [2018-09- 30]. http://pypl.github.io/PYPL.html.

[2] 黄天羽, 嵩天. 以图形牵引兴趣的Python案例教学方法与实践[J]. 计算机教育, 2017(8): 32-37.

[3] 嵩天, 黄天羽, 礼欣. 面向计算生态的Python语言入门课程教学方案[J]. 计算机教育, 2017(8): 7-12.

[4] 网络爬虫[EB/OL]. [2018-11-13]. https://baike.baidu.com/ item/网络爬虫/5162711.

[5] 赵广辉. 面向新工科的Python程序设计交叉融合案例教学[J]. 计算机教育, 2017(8):23-27.

[6] 张莉, 金莹, 张洁. 多样化可扩展的Python教学体系探索与实践[J]. 计算机教育, 2017, 8, 18-22.

Exploration and Practice on the Python Teaching Scheme of Attracted by Web Crawler

WANG Fang, XIAO Huang-pei

(Guangzhou College of South China University of Technology, Guangzhou 510800, Guangdong, China)

This article, with respect to design of the teaching plan, teaching method, teaching case, etc, systematically studies and thoroughly designs the education mode of Python courses. In teaching of Python, the adoption of interest-driving teaching method combined with detailed case projects of Web Crawler can both stimulate students interest in learning and enhance teaching quality, and very practical and has strong promotional value in simiar majors.

Web Crawler; Python; Teaching scheme; Case teaching

TP311

A

10.3969/j.issn.1003-6970.2018.12.007

华南理工大学广州学院2018“创新强校工程”(JY181401)

王芳(1986-),女,硕士研究生,助教,主要研究方向:软件工程、大数据技术;肖皇培(1979-),男,博士,副研究员,主要研究方向:信息安全、密码学。

王芳,肖皇培. 以爬虫为兴趣牵引的Python教学方案探索与实践[J]. 软件,2018,39(12):28-31

猜你喜欢

爬虫程序设计案例
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
案例4 奔跑吧,少年!
基于Visual Studio Code的C语言程序设计实践教学探索
随机变量分布及统计案例拔高卷
从细节入手,谈PLC程序设计技巧
利用爬虫技术的Geo-Gnutel la VANET流量采集
发生在你我身边的那些治超案例
大数据环境下基于python的网络爬虫技术
高职高专院校C语言程序设计教学改革探索