版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
191-XXXX学院教案教案(详案)学年第2学期课程名称:Python网络爬虫项目式教程课程代码:适用专业:大数据技术及应用教师姓名:所属系部:职称:课时:总学时64(理实一体64)使用教材:教务处制
XX教学单元教案主题项目一保存服务器网页到本地认识爬虫序号1课时2教学手段板书、多媒体教学方法讲授、讨论教学课型£理论£实训R一体化£(其它)教学目标能力目标:1、能描述爬虫的应用场景2、能描述爬虫的工作原理3、能描述实现网络爬虫的流程知识目标:1、网络爬虫的工作原理2、网络爬虫抓取网页的流程3、Python实现网络爬虫的流程素质目标:1、了解学习本门课的重要性;2、了解本门课在整个专业体系里面的作用和定位;知道本门课的学习方式和本学期对本门课的总体设计安排以及考试安排;教学重点1、网络爬虫的工作原理2、网络爬虫的抓取网页的流程教学难点掌握Python程序的执行原理教学过程设计备注任务1(Python网络爬虫项目式教程说课)(10分钟)一、课程定位1.课程性质《Python网络爬虫项目式教程》是计算机类专业必修的一门专业核心课,本课程以能力与知识相结合为培养目标,以社会岗位需求为向导,切实培养学生的逻辑与编程思维及使用程序设计语言解决实际问题的能力,为走上工作岗位打下坚实的基础。人才培养规格《Python网络爬虫》服务于高职高专人才培养目标,坚持理论与实务结合,以爬虫工程师技能培养为主线。职业岗位要求利用Python语言提供的强大功能,编写应用于计算机网络、企业级应用软件具体职业岗位专业能力培养:(1)具备面向对象编程的编程思想及基本算法,能根据问题正确选择、组合算法。(2)能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果。(3)具备进行分析和处理Python爬虫程序运行中产生的有关技术问题的能力。二、课程目标(1)知识目标:理解和掌握Python语言基本语法和语义,掌握Python网络爬虫开的一般流程、掌握Python网络爬虫开发的基本步骤。(2)能力目标:要求能较熟练掌握Python请求网页的方法,数据提取方法、数据持久化存储的方法。(3)素质目标:养成良好的编程习惯、提高团队精神和协作精神、艰苦奋斗意识、心理素质和克服困难的能力。三、课程设计思路1.课程内容及重难点2教学方法与手段3.考核方法4.教学条件四、改革思路第一课时(什么是网络爬虫、网络爬虫的应用场景、Robots协议、防爬虫应对策略)教师通过直接导入的方式导入新课教师首先讲解网络爬虫的概念,其次讲解网络爬虫历经几十年的发展,衍生出的爬虫类型,了解了什么是网络爬虫,然后讲解网络爬虫的应用场景,最后讲解Robots协议以及防爬虫对应策略。二、新课讲解知识点1-什么是网络爬虫(1)熟悉网络爬虫的概念。(2)熟悉网络爬虫的分类。网络爬虫(WebCrawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人自动请求万维网,并接收从万维网返回的数据。与真人浏览互联网相比,网络爬虫能够获取的信息量更大,效率也更高。(1)通用网络爬虫(GeneralPurposeWebCrawler)又称全网爬虫(ScalableWebCrawler),是指访问全互联网资源的网络爬虫。通用网络爬虫是互联网早期出现的传统网络爬虫,它是捜索引擎(如百度、谷歌、雅虎等)抓取系统的重要组成部分,主要用于将互联网中的网页下载到本地,形成一个互联网内容的镜像备份。(2)聚焦网络爬虫(FocusedCrawler)又称主题网络爬虫(TopicalCrawler),是指选择性地访问那些与预先定义好的主题相关网页的网络爬虫,它根据预先定义好的目标,有选择性地访问与目标主题相关的网页,获取所需要的数据。(3)增量式网络爬虫(IncrementalWebCrawler)是指对已下载的网页采取增量式更新,只爬行新产生或者已经发生变化的网页的爬虫。(4)深层网络爬虫(DeepWebCrawler)是指爬行深层网页的网络爬虫,它要爬行的网页层次比较深,需要通过一定的附加策略才能够自动爬行,实现难度稍微大一些。知识点2-网络爬虫的应用场景随着互联网信息的“爆炸”,网络爬虫渐渐为人们所熟知,并被应用到社会生活的众多领域。作为一种自动采集网页数据的技术,很多人其实并不清楚网络爬虫具体能应用到什么场景。事实上,大多数依赖数据支撑的应用场景都离不开网络爬虫,包括搜索引擎、舆情分析与监测、聚合平台、出行类软件等。知识点3-Robots协议(1)熟悉什么是robots协议。Robots协议又称爬虫协议,它是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息,确保网站用户的个人信息和隐私不受侵犯。为了让网络爬虫了解网站的访问范围,网站管理员通常会在网站的根目录下放置一个符合Robots协议的robots.txt文件,通过这个文件告知网络爬虫在抓取该网站时存在哪些限制,哪些网页是允许被抓取的,哪些网页是禁止被抓取的。知识点4-防爬虫应对策略(1)添加User-Agent字段浏览器在访问网站时会携带固定的User-Agent(用户代理,用于描述浏览器的类型及版本、操作系统及版本、浏览器插件、浏览器语言等信息),这么做的目的是向网站表明自己的真实身份。(2)降低访问频率如果同一账户在较短的时间内多次访问了网页,那么网站运维人员会推断此种访问行为可能是网络爬虫的行为,并将该账户加入到黑名单禁止访问网站。为防止网站运维人员从访问量上认出网络爬虫的身份,我们可以降低网络爬虫访问网站的频率。(3)设置代理服务器网络爬虫在访问网站时,若反复使用同一IP地址进行访问,极易被网站认出网络爬虫的身份后进行屏蔽、阻止、封禁等操作,此时便可以在网络爬虫和Web服务器之间设置代理服务器。(4)识别验证码有些网站在检测到某个客户端的IP地址访问次数过于频繁时,有时会要求该客户端进行登录验证,并随机提供一个验证码,此时为了应对这种突发情况,网络爬虫除了要输入正确的账户密码之外,还要像人类一样通过滑动或点击行为识别验证码,如此才能继续访问网站。三、归纳总结教师回顾本节课所讲的内容,并通过测试题的方式引导学生解答问题并给予指导。四、布置作业教师通过超星平台布置本节课作业以及下节课的预习作业。第二课时(网络爬虫的工作原理、网络爬虫抓取网页的流程、网络爬虫的实现技术、Python实现网络爬虫的流程)一、复习巩固教师通过上节课作业的完成情况,对学生吸收不好的知识点进行再次巩固讲解。二、教师通过直接导入的方式导入新课互联网中有多种网络爬虫,尽管这些网络爬虫的使用场景不同,但它们的工作原理大同小异。接下来,本节课将讲解网络爬虫的工作原理、网络爬虫的工作流程、网络爬虫的实现技术和Python实现网络爬虫的流程。新课讲解知识点1-网络爬虫的工作原理(1)通用网络爬虫的工作原理。(2)聚焦网络爬虫的工作原理。(1)通用网络爬虫的采集目标是整个互联网上的所有网页,它会先从一个或多个初始URL开始,获取初始URL对应的网页数据,并不断从该网页数据中抽取新的URL放到队列中,直至满足一定的条件后停止,如下图所示。(2)聚焦网络爬虫会根据一定的网页分析算法对网页进行筛选,保留与主题有关的网页链接,舍弃与主题无关的网页链接,目的性更强,如下图所示。知识点2-网络爬虫抓取网页的流程虽然通用网络爬虫和聚焦网络爬虫的工作原理有一些差别,但它们的工作流程大致相同,它们的工作流程如下图所示。关于上图工作流程的详细讲解如下。(1) 精心选择一些网页,将这些网页的链接作为种子URL。(2) 将种子URL放入到待抓取URL队列中。(3) 从待抓取URL队列中依次读取URL,并通过DNS解析URL,把链接地址转换为网站服务器所对应的IP地址。(4) 将IP地址和网页相对路径名称交给网页下载器,网页下载器负责网页内容的下载。(5) 网页下载器将相应网页的内容下载到本地。(6) 将下载到本地的网页存储到页面库中,等待建立索引等后续处理;与此同时将下载过网页的URL放入到已抓取URL队列中,这个队列记载了网络爬虫已经下载过的网页URL,以避免网页的重复抓取。(7) 对于刚刚下载的网页,从中抽取出所包含的所有链接信息,并在已抓取URL中检查其是否被抓取过,如果还未被抓取过,则将这个URL放入到待抓取URL队列中。(8) 下载待抓取URL队列中的URL对应的网页,如此重复(3)~(7),直到待抓取URL队列为空。知识点3-网络爬虫的实现技术为满足用户快速从网页上采集数据的需求,市面上出现了一些可视化界面的网络爬虫工具,比如八爪鱼采集器、火车头采集器等,这些工具本质上就是一个网络爬虫。除了直接使用这些现成的工具之外,我们也可以开发一个自己的网络爬虫。目前,开发网络爬虫的语言主要有PHP、Go、C++、Java、Python共5种。知识点4-Python实现网络爬虫的流程(1)抓取网页数据抓取网页数据是按照设定的目标,根据所有目标网页的URL向目标网站发送请求,并获得整个网页的数据。抓取网页数据的过程类似于用户在浏览器中键入网址,按回车后看到由浏览器渲染后的网页的过程。(2)解析网页数据解析网页数据是采用不同的解析网页的方式从整个网页的数据中提取出目标数据。例如,我们想要采集所有苹果手机的价格信息,价格便是提取的目标数据。解析网页数据的过程类似于从浏览器显示页面中找到目标标签的文本,然后将文本复制下来的过程。(3)存储网页数据储网页数据的过程也是比较简单,就是将上一步骤中提取的目标数据以文件的形式存放到本地,也可以存储到数据库,方便后期对数据进行深入地研究。四、归纳总结教师回顾本节课所讲的内容,并通过测试题的方式引导学生解答问题并给予指导。五、布置作业教师通过高校教辅平台(/)布置本节课作业以及下节课的预习作业。作业布置见教材第1章配套的习题教学反思
XX教学单元教案主题项目一保存服务器网页到本地pygame的简单使用序号2课时2教学手段板书、多媒体教学方法讲授、讨论教学课型£理论□实训■一体化□(其它)教学目标能力目标:会安装Python开发环境会使用pygame会使用pycharm软件知识目标:1、掌握Python环境的配置和安装2、掌握pygame库的使用3、掌握Pygame软件的使用素质目标:1、学会自己主动学习2、培养学生良好的自我表现、与人沟通能力教学重点1、掌握Python开发环境的安装和配置2、掌握pygame库的使用教学难点1、掌握pygame库的使用教学过程设计备注一、复习巩固教师通过上节课作业的完成情况,对学生吸收不好的知识点进行再次巩固讲解。二、教师通过直接导入的方式导入新课要进行爬虫的开发,必须安装好Python的开发环境,开发环境安排好以后,我们就可以小试牛刀了,使用pygame库,在课堂播放音乐,给同学们提提精神。新课讲解知识点1-Python的安装Python几乎可以在任何平台下运行,如我们所熟悉的:Windows、Linux等多种主流操作系统上运行。安装Python的时候,我们可以选择从源码安装(一般先要安装编译源码所需要的各种依赖包,再下载源码解压安装),也可以用已经编译好打包好的安装包进行安装,这里笔者选择的是编译好的安装包下载安装。笔者以在Windows7、64位操作系统中安装python为例,简要说明一下Python的安装:Python的安装包,可以直接从官网下载,Python下载地址:/,单击单击点击Downloads下选择Widows,再选择Python的版本下载。这里版本主要分成3个版本:embeddablezipfile-解压版:解压后配置环境变量就可以直接使用;executableinstaller-安装版:需要安装并配置环境变量才能使用;web-basedinstaller-在线安装版:需要连接网络安装,3个版本如图1-7所示。x86代表32位,x86-64代表64位,根据您的计算机系统是32位系统还是64位系统选择安装,关于操作系统的位数查看,可以按照如图1.5的示意进行查看。注意:Python版本要根据自己操作系统是64位,还是32位来选择。知道了自己操作系统是64位还是32位系统以后,就可以选择对应的版本进行下载了,Python也有自己的版本号,其中是分成了32位和64位版本的。建议读者朋友,选择3.7版本以上的Python下载并安装,一路点击下去就可以完成安装。接下来,进行环境变量的配置:如果前面的“AddPythontoPATH”没有进行勾选,那么意味着Python安装以后,可能还不能正常使用,此时需要配置环境变量。所谓的环境变量是定义系统运行环境的一些参数。简单的说计算机在某个执行程序或命令的时候,是在环境变量找对应的程序或命令的起始位置的。如果不正确设置环境变量就不能正确使用相应的应用程序。环境变量的路径为计算机|属性|高级系统设置|高级|环境变量|系统变量|Path|编辑,设置环境变量的详细步骤如下:(1)在计算机上右击,选择属性,如图1-16所示。图1-16在计算机选择“属性”(2)在弹出对话框上左键单击“高级系统设置”,如图1-17所示。图1-17选择高级系统设置(3)在高级面板中,选择系统变量中的Path,点编辑,如图1-18所示。图1-18选择Path路径(3)请注意配置环境变量,将“;C:\Python37;C:\Python37\Scripts;”(注意,复制双引号中间的内容,不要复制双引号)复制到环境变量中的系统变量的Path变量的最后边位置上去,如图1-19所示。图1-19配置环境变量接下来,测试一下,Python是否安装成功。按下键盘上的win+R键,调出运行窗口,在运行窗口中输入cmd回车,在cmd下输入python-V,可以看到Python的版本号为Python3.7.0,就可以知道Python安装成功了,如图1-20所示。注意:cmd下输入的是python–V,V是大写的。图1-20测试Python是否安装成功知识点2-pygame的简单使用pygame本身是用来开发游戏的,这里使用该框架来播放mp3格式的音频文件。该框架主要使用到了如下方法和模块。(1)pygame.init()方法该函数在使用pygame时进行初始化,只有引用了该函数才能使用pygame提供的所用功能。(2)pygame.Rect()方法该函数可以设置一张图片的位置以及大小,该函数主要包含如下构造函数。1).rect=pygame.Rect(left,top,width,height)2).rect=pygame.Rect((left,top),(width,height))3).rect=pygame.Rect(object)(3)pygame.mixer模块该模块主要是用来播放声音的,主要用到了以下的方法。1)pygame.mixer.init()该方法主要是初始化混音器模块。2)pygame.mixer.quit()该方法主要是卸载混音器模块3)pygame.mixer.music.stop()该方法主要是停止播放音频文件。4)pygame.mixer.music.pause()该方法主要是暂停播放所有音频文件。5)pygame.mixer.music.play()该方法主要是播放载入的音频文件。6)pygame.mixer.music.load(file)使用文件名作为参数载入音频文件,音频文件可以是mp3等格式。要使用pygame库,可以使用如下命令进行安装:pipinstallpygame01importpygame02importtime03if__name__=='__main__':04print("我亲爱的祖国我永远紧依着你的心窝!")05file_name="whwdzg.mp3"06pygame.mixer.init()#只初始化音频部分07#载入的音乐不会全部放到内容中,而是以流的形式播放的,即在播放的时候才会一点点从文件中读取。08track=pygame.mixer.music.load(file_name)09#播放载入的音乐。该函数立即返回,音乐播放在后台进行。10pygame.mixer.music.play()11time.sleep(300)12pygame.mixer.music.stop()01行导入pygame模块;02行导入time模块;04行打印输出提示信息;05行定义字符串file_name;06行初始化音频部分;08行载入音乐;10行播放音乐;11行表示延时,等待播放加载就绪;12行停止音乐。知识点3-Windows下MongoDB安装和配置2.Windows下MongoDB安装和配置使用64位的3.4版本的MongoDB:mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi,安装及具体配置过程如下。(1)打开msi安装包,勾选同意许可条款,单击“Next”按钮,如图1-21所示。图1-21接受协议(2)安装程序提供两种安装模式,完整(Complete)模式会将全部内容安装在C盘路径且无法更改,若要更改安装路径则需要选择下图中的定制(Custom)模式,如图1-22所示。图1-22安装模式的选择(3)在定制模式下可选择安装路径和需要安装的组件,单击“Next”按钮开始安装过程,如图1-23所示。图1-23选择安装目录(4)安装完成后,需进入安装目录,建立data和log文件夹分别存放数据和log文件,还需创建一个mongo.conf配置文件,如图1-24所示。图1-24创建配置文件(5)在logs文件夹内创建一个名为mongo.log的日志文件,内容留空即可,如图1-25所示。图1-25创建日志文件(6)为了能够正常使用MongoDB数据库,需要配置其环境变量,在系统变量“Path”中添加MongoDB的路径,如D:\ProgramFiles\MongoDB\Server\3.4\bin,如图1-26所示。图1-26添加环境变量(7)还需配置MongoDB服务,使用管理员权限打开cmd启动控制台,安装服务完毕后可使用命令对服务进行开启和关闭,如图1-27所示。图1-27CMD下MongoDB服务的启动和停止(8)服务启动后,在浏览器输入:27017,若出现下图所示的字样,则说明启动成功,如图1-28所示。图1-28测试MongoDB服务是否正常启动3.Linux下MongoDB安装和配置在Linux环境下,选用mongodb-linux-x86_64-rhel70-3.4.11版本的MongoDB数据库,安装步骤如下。(1)使用“wget”命令从官网获取MongoDB数据库的tar包,如图1-29所示。图1-29下载MongoDB数据库tar包(2)将tar包进行解压缩,并复制到“/usr/local/”路径下,如图1-30所示。图1-30使用解压命令解压(3)切换至“/usr/local/mongodb/bin”路径下,使用“sudovimmongodb.conf”命令创建MongoDB数据库配置文件,如图1-31所示。图1-31创建配置文件(4)切换回“/usr/local/mongodb”路径下,依次运行“sudomkdirdata”、“cddata”、“sudomkdirdb”、“sudomkdirlogs”命令创建文件夹,如图1-32所示。图1-32创建相关文件夹(5)再次切换至“/usr/local/mongodb/bin”路径下,运行“sudo./mongod-fmongodb.conf”命令启动MongoDB,如图1-33所示。图1-33启动MongoDB(6)打开浏览器输入“:27017”,出现下图中的信息,说明启动成功,如图1-34所示。图1-34测试MongoDB能否正常使用五、上机练习上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。上机一:(熟悉Python环境变量的设置)上机二:(使用pygame播放音乐)上机三:(MongoDB安装和配置)六、归纳总结教师回顾本节课所讲的内容,并通过实现Pygame实现音乐播放的方式引导学生解答问题并给予指导。七、布置作业教师通过高校教辅平台(/)布置本节课作业以及下节课的预习作业。作业布置教材项目一配套的习题教学反思通过网络查阅相关资料,培养学生查阅相关知识的能力。
XX教学单元教案主题项目一保存服务器网页到本地urllib库的使用序号3课时2教学手段板书、多媒体教学方法讲授、讨论教学课型£理论□实训■一体化□(其它)教学目标能力目标:1、会使用urllib库请求网页2、会安装使用Mysql数据库知识目标:1、掌握urllib库的使用2、掌握MySQL数据库的安装和使用素质目标:1、学会自己主动学习2、培养学生良好的自我表现、与人沟通能力教学重点1、掌握urllib库的使用教学难点1、掌握urllib库的使用教学过程设计备注一、复习巩固教师通过上节课作业的完成情况,对学生吸收不好的知识点进行再次巩固讲解。二、教师通过直接导入的方式导入新课大家在熟悉了Python开发环境之后,我们来学习下如何将远程服务器的网页下载到本地,这个,我们也就可以认为是爬虫的功能了,今天我们来学习一个叫做urllib的网页请求库哦。三、新课讲解知识点1-使用urllib库请求第一个网页urllib是一个http请求的Python自带的标准库,无需安装,直接可以用。并且提供了如下功能:网页请求、响应获取、代理和cookie设置、异常处理、URL解析,可以说是一个比较强大的模块。这里只介绍请求模块-urllib.request的简单使用,更详细的使用请参阅项目三。urllib.request的GET请求是如下方式:urllib.request.urlopen(url,data,timeout)url:请求地址data:请求数据timeout:请求超时时间data和timeout为可选参数,可以为空,也就是说可以不写。给一个请求网页的实际例子。importurllib.requestresponse=urllib.request.urlopen('/u_13389043/3153863')print("此时的数据类型为:"+str(type(response)))response=response.read().decode('utf-8')print("编码以后的数据类型为:"+str(type(response)))运行程序,结果如图1-36所示。图1-36使用urllib请求网页的结果01行导入urllib.request模块;02行表示向指定网页发起请求;03行打印此时的数据类型;04行将收到的响应数据转成strs数据类型;05行表示打印输出此时的数据类型。此时我们可以使用下面两行代码就可以将网页的响应内容写入本地文件中:f=open("./book.txt","w",encoding="utf-8")f.write(response)运行程序,结果如图1-37所示:图1-37将网页响应内容写入到本地文件中知识点2-安装和配置MySQL数据库网络爬虫采集到数据以后,一般是放到数据库进行保存。数据库的选择一般有SQLite、MySQL、以及MongoDB等数据库。这里首先介绍MySQL数据库的安装。具体步骤略,见课堂演示。知识点3-将指定网页保存到本地对目标网页url=“/2019/09/04/ARTI9r6wRsrNhbZv4DwlWC5T190904.shtml”使用urllib库发起请求,将网页的响应数据保存到本地,然后实现本地可以浏览访问。这里可以将该网页的css文件也发起一次请求,可以将本地文件也保存到本地。这样,这里一共需要两次发起网页请求,两次保存网页的操作,这里给出实例代码。01importurllib.request02list1=['/2019/09/04/ARTI9r6wRsrNhbZv4DwlWC5T190904.shtml','/photoAlbum/templet/common/DEPA1452765360136771/style_arti.css']03defsave_data():04foriinrange(0,2):05response=urllib.request.urlopen(list1[i])06response=response.read().decode('utf-8')07ifi==0:08f=open("./gzzq.html","w",encoding="utf-8")#保存网页09f.write(response)10else:11f=open("./index.css","w",encoding="utf-8")#保存CSS12f.write(response)13save_data()虽然将网页css保存到了本地,打开网页是可以正常浏览的,应为原始网页只有一个css文件,且该文件使用的是绝对路径的网址,如图1-58所示。图1-58下载的网页的CSS路径如果要使用本地网址,可以按照如下图1-59修改:图1-59使用本地CSS程序的运行结果如图1-60所示:图1-60本地运行爬去到的网页知识点4-将请求网页的指定的响应内容保存到数据库使用urllib库向指定网址“/get”发起请求,将返回的响应头保存到数据库,使用下面代码创建数据库表。01--02--数据库:`httpbin`03--04--05--06--表的结构`httpbindata`07--08CREATETABLEIFNOTEXISTS`httpbindata`(09`id`int(20)NOTNULLAUTO_INCREMENT,10`data`textNOTNULL,11PRIMARYKEY(`id`)12)ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=2;13--14--转存表中的数据`httpbindata`15--这里给出Python的代码:01importpymysql02importurllib.request03url='/get'04response=urllib.request.urlopen(url)05response=response.read().decode('utf-8')06conn=pymysql.Connect(host='',port=3306,user='root',password='root',db='httpbin')07cursor=conn.cursor()#获取游标08sql="insertintohttpbindata(data)values(%s);"09print(response)10try:11cursor.execute(sql,(response))12mit()13print("数据插入成功")14exceptExceptionasresult:15print("数据插入失败:"+str(result))四、上机练习上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。将课堂演示代码进行上机上机一:(使用urllib库请求第一个网页)上机二:(将请求网页的指定的响应内容保存到数据库)五、归纳总结教师回顾本节课所讲的内容,并通过实现Pygame实现音乐播放的方式引导学生解答问题并给予指导。六、布置作业教师通过高校教辅平台(/)布置本节课作业以及下节课的预习作业。作业布置教材项目一配套的判断题和简答题教学反思通过网络查阅相关资料,培养学生查阅相关知识的能力。XX教学单元教案主题项目二使用正则提取网页中内容网页的基本知识序号4课时2教学手段板书、多媒体教学方法讲授、讨论教学课型£理论□实训■一体化□(其它)教学目标能力目标:1、会书写静态网页2、会看懂CSS代码3、会看懂简单的JavaScript代码知识目标:1、掌握html的基本结构2、掌握CSS的基本用法3、掌握JavaScript最简单的使用素质目标:1、学会自己主动学习2、培养学生良好的自我表现、与人沟通能力教学重点1、掌握html的基本结构2、掌握CSS的基本用法教学难点1、掌握html的基本结构2、掌握CSS的基本用法教学过程设计备注一、复习巩固教师通过上节课作业的完成情况,对学生吸收不好的知识点进行再次巩固讲解。二、教师通过直接导入的方式导入新课我们初步接触了爬虫的基本知识,在深入学习爬虫之前,有些同学对网页的基本知识还不太牢靠,我们对HTML,CSS和JavaScipt的基本知识做一些简单的回顾。四、新课讲解知识点1-HTML基础知识HTML(HyperTextMarkupLanguage)称为超文本标记语言,是一种描述文档结构的标记语言,它是一种应用非常广泛的网页格式,也是最早被用来显示网页的语言之一。注意:HTML不是编程语言,它只是一门网页标记语言。Web浏览器能读懂HTML文件,并以网页显示显示出来。(1)标记的格式HTML中的标记的主要作用是用来控制网页的显示方式,标记一般有<…>和</…>组成,<…>一般是标记的开头,中间的省略号表示其他字符串,</…>表示标记的结束。标记分为双标记和单标记。双标记要求<…>和</…>成对出现,典型的标记如下:<html>…</html><html>表示一个网页的开始,</html>表示网页的结束,中间的省略号表示网页的具体内容,包含若干除<html>…</html>之外的标记和若干文字、图片、视频等内容。<head>…</head><head>表示一个网页的头部,</head>表示网页头部结束,中间的省略号表示一个网页的头部的内容。<title>…</title><title>表示一个网页的标题的开始,</title>表示一个网页的标题的结束。中间的省略号表示这个网页标题的实际内容,该内容要求是文字内容。<body>…</body><body>表示一个网页主体的开始,</body>表示一个网页主体的结束,中间的省略号表示这个网页主体的实际内容,这个内容可以包含若干标记和文字、图片、视频等内容。单标记一般<…>表示,典型的单标记如下:<br>该标签表示换行。<hr>该标签表示水平线。<img>该标签表示插入图片。<input>该标签表示文本输入框。<param>该标签表示对象,用来定义播放参数。<meta>该标签表示元信息。<link>该标签定义文档与外部资源的关系。(2)标记的使用可以按照以下三种方式使用标记。1)<标记名>文本或超文本</标记名>举例如下:<title>百度首页</title>注意:超文本是用超链接的方法,将各种不同的位置的文字信息组织在一起,形成一个网状文本。这里超练级是指链接的载体和链接的目标地址两个部分的内容。链接的载体指的是显示链接的部分,即包含超链接的文字或图像。链接的目标是指单击超链接后所显示的内容。例如<ahref=“/”>百度</a>就构成了一个超链接。2)<标记名属性名1=“属性值1”属性名2=“属性值2”>文本或超文本</标记名>举例如下:<fontsize=”12”color="blue">这是一些文本!</font><ahref=""target="_blank">百度</a>这里,a就是标记名,表示超级链接,href表示超级链接,百度就是文本。target="_blank"表示浏览器新开一个窗口,打开href指示的网页。3)<标记名>举例如下:<hr>该标签表示在HTML页面中创建一条水平线。注意:HTML标记及属性中字母是不区分大小写的,标记名与左尖括号之间是不能留空白的,标记中用到双引号的地方都是英文中的引号。(3)HTML的文档结构HTML文档结构一般包含了一个网页的开始部分、网页的头部部分、网页的主体部分以及网页的结束部分。下面给出了一个基本的网页,如图2-2所示。图2-2HTML基本结构在该图上对应的代码是一个什么意思呢?<!doctypehtml>是html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明。HTML文件的头部主要有以下内容:<head>、</head>之间定义,内容包括了标题名和作者信息、网站的关键字、网站的描述等内容。例如:<metaname="keywords"content="工业物联网云平台,网关,物联网智能网关,无人值守设备,能源物联网,物业物联网"/>头部区域还可以包含<title></title>,表示网页的标题。网页的主体部分位于头部之后,在<body>和</body>之间定义,主要定义了网页上要显示的主要内容和显示格式。主体部分可以包含若干其他标记和文字、图片以及其他富媒体内容。注意:富媒体是指包含流媒体、声音、Flash、以及Java、Javascript、DHTML等程序设计语言的形式之一或者几种的组合。HTML中还包含了一类信息,就是注释,注释也在爬虫开发过程中,经常遇到,所以,有必要介绍以下HTML中的注释。注释的格式如下:<!--注释文字-->注释以“<!--”开始,以“-->”结束,注释的内容会被浏览器忽略。利用注释可以为HTML文档不同部分加上说明,方便以后的维护。知识点2-CSS基础知识CSS指层叠样式表(CascadingStyleSheets),同样CCS也不是编程语言,CSS用来告诉浏览器如何指定样式、布局等。(1)CSS样式表的分类在HTML中使用CSS样式,主要有三种做法:1)行内式设置HTML标签的时候,设置该标签的style属性,style属性就是包含了样式。其一般格式为:<标签名style=”属性1:值1;…属性n:值n;”>内容</标签名>举例如下:<pstyle=”font-size:16px;color:red”>这是一段文字</p>如果我们把它放到一个网页中,会是什么样的一个效果呢?01<!DOCTYPEhtml>02<htmllang="en">03<head>04<metacharset="UTF-8">05<title>我的首页</title>06</head><body>07<pstyle="font-size:16px;color:red">这是一段文字</p>08</body>09</html>01行是html5标准网页声明;02行指定向搜索引擎表示该页面是HTML语言,并且语言为英文网站;03行表示网页的头部开始;04行设定网页的编码;05行设定网页的标题;06行表示网页头部结束,网页的主体部分开始;07行定义了一个段落,其文字内容是“这是一段文字”,该段落文字字体为16px,文字颜色为红色。运行效果,如图2-3所示。图2-3行内式样式表作用效果行内式,有的地方也叫内敛样式。这种方式的控制范围有限,只能控制一个标签,比如,上面例子中的style只能控制p标签。这种样式的缺点式是样式(CSS)和结构(HTML)没有分离,优点是权重高,比如,我们还通过类选择器给p标签做了如下定义:01<styletype="text/CSS">02p{03font-size:20px;04color:blue;05}06</style>01行表示样式表开始;02行选择p标签,设定p标签内的字体大小为20px,文字颜色为蓝色。那么此时,这一段文字到底字体是多大,文字显示颜色呢?显然,这里行内式给文字字体的大小和文字的颜色做了定义,那么,此时,字体大小和颜色就会按照行内是定义的样式进行显示的。2)内部样式表什么是内部样式表呢?内标样式表是在HTML中的head标签中定义style标签,在其中书写样式。内部样式表意味着CSS样式存在HTML的内部,作用范围是只对所在的网页有效。01<!DOCTYPEhtml>02<htmllang="en">03<head>04<metacharset="UTF-8">05<title>我的首页</title>06<styletype="text/css">07p{08font-size:20px;09color:blue;10}11</style>12</head>13<body>14<p>这是一段文字</p>15</body>16</html>01行是html5标准网页声明;02行指定向搜索引擎表示该页面是HTML语言,并且语言为英文网站;03行表示网页的头部;04行表示设定网页的编码;05行设定网页的标题;06~11行设定样式表,该样式表中,设定了p标签中文字大小是20px,字体颜色为蓝色;12行表示网页头部结束标签;13~15行表示定义网页的主体部分,在网页的主体部分,放置了一个短路标签p,该标签中的文字内容为”这是一段文字”;15行表示网页主体部分结束标记;16行表示整个网页结束。知识点2-JavaScript的简单使用1.JavaScript的引入JavaScript语言的引入主要有网页中直接插入和外部引入两种方式。(1)网页中直接插入01<!DOCTYPEhtml>02<htmllang="en">03<head>04<metacharset="UTF-8">05<script>06varnum=0;07</script>08<styletype="text/css">09html,body{10width:100%;11height:200px;12margin:0;13padding:0;14}15.box1{16width:300px;17height:100px;/*水平居中*/18margin:0auto;19position:relative;/*脱离文档流*/20top:50%;/*偏移值,实现垂直居中*/21}22.btn1{23margin-top:40px;24margin-left:70px;25}2627</style>28<title>JavaScrip的引入</title>29</head>30<body>31<divclass="box1">32<inputtype="button"onclick="fun(this.id)"id="a"class="btn1"value="统计点击次数,请点我">33<script>34functionfun(id){35vars=document.getElementById(id).value;36num=num+1;37alert(s+"我被点击了"+num+"次");38}39</script>40</div>41</body>42</html>运行程序,结果如图2-10所示。图2-10网页中直接插入JavaScript代码(2)网页中从外部引入JavaScript代码引用外部JavaScript代码,可以是JavaScript代码和HTML文件相分离、一个JavaScript文件可被多个HTML文件使用,同时使得JavaScript代码的维护也更加方便。外部引用JavaScript文件,是使用script的src属性,设置JavaScript文件的URL就可以了。<scriptsrc=“xxx.js”></script>把上个例子中的JavaScript代码抽成一个JavaScript文件,名字为demo.js,具体代码如下:01varnum=0;02functionfun(id){03vars=document.getElementById(id).value;04num=num+1;05alert(s+"我被点击了"+num+"次");06}01行定义全局变量num,并赋初始值0;02行定义函数,名为fun,并接收id;03行表示查找id确定的对象,并获取该对象的值赋值给s;04行对num变量实现加1操作;05行向用户弹出点击了多少次。01<!DOCTYPEhtml>02<htmllang="en">03<head>04<metacharset="UTF-8">05<scriptsrc="demo.js"></script>06<styletype="text/css">07html,body{08width:100%;09height:100%;10margin:0;11padding:0;12}13body{14display:flex;15align-items:center;/*定义body的元素垂直居中*/16justify-content:center;/*定义body的里的元素水平居中*/17}18.box1{19width:300px;20height:100px;21margin:0auto;22border:solid1pxrebeccapurple;23}24.btn1{25margin-top:40px;26margin-left:70px;27}28</style>29<title>JavaScrip的外部引入</title>30</head>31<body>32<divclass="box1">33<inputtype="button"onclick="fun(this.id)"id="a"class="btn1"value="统计点击次数,请点我">34</div>35</body>36</html>05行引入外部的js文件,要求该文件和HTML文件在同一个目录下;07行定义html、body的宽度和高度都为100%,清除内外边距;13~17行定义body相关属性,使用弹性布局(flex),15行设置body中的元素垂直居中,16行定义body的元素水平居中。运行结果同上一个例子,这里不再给出运行结果。2.JavaScript的基本语法JavaScipt包含了标识符、变量、数据类型、运算符号、控制语句、注释、类型转换等基本概念,这里分别做一些介绍。首先,JavaScipt代码是严格区分大小写的,每条语句结束都必须加上分号,语句块可以加上{}号。(1)标识符标识符是指JavaScript中定义的符号,例如,变量名、函数名、对象名等等。标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)符号组成,标识符不能以数字开头,不能使用系统的保留字。(2)变量变量一种引用内存位置的容器,用于保存再执行脚本时可以更改的值,变量的命名请遵循标识符的命名。例如,定义如下变量:vara=2,varb=4;(3)数据类型在JavaScript中主要有数字类型(Number)、布尔型(Boolean)、字符串型(String)四、上机练习使用前面介绍的知识,实现网页展示伟大抗疫精神,实现效果如下:上机一:(网页展示伟大抗疫精神)五、归纳总结教师回顾本节课所讲的内容,归纳总结CSS和JavaScript的核心知识点。六、布置作业教师通过高校教辅平台(/)布置本节课作业以及下节课的预习作业。作业布置教材项目二配套的习题教学反思通过网络查阅相关资料,培养学生查阅相关知识的能力。
XX教学单元教案主题项目二使用正则提取网页中内容正则的使用序号5课时2教学手段板书、多媒体教学方法讲授、讨论教学课型£理论□实训■一体化□(其它)教学目标能力目标:1、会读正则表达式2、会使用正则表达式提取想要的内容知识目标:1、掌握正则表达式的基本语法2、掌握常用的正则函数素质目标:1、学会自己主动学习2、培养学生良好的自我表现、与人沟通能力教学重点1、掌握正则表达式的基本语法2、掌握常用的正则函数教学难点1、掌握正则表达式的基本语法2、掌握常用的正则函数教学过程设计备注一、复习巩固教师通过上节课作业的完成情况,对学生吸收不好的知识点进行再次巩固讲解。二、教师通过直接导入的方式导入新课前面的知识中,我们已经掌握了使用urllib库来向服务器上的网页发起请求,并能将整个网页保存到本地,那么,如何从网页中提取到我们想要的内容,学过网页设计的同学应该知道,我们可以正则表达式来获取我们想要的内容。三、新课讲解知识点1-正则表达式的基本语法正则表达式描述在搜索文本时要匹配的一个或多个字符串。正则表达式中包括了普通字符和元字符。元字符也叫特殊字符,每个元字符在正则表达式中表示的行为是不一样的,具体见表2.3所示。表2.3元字符表元字符行为实例*零次或多次匹配前面的字符或子表达式。ai*与“a”和“aii”匹配。+一次或多次匹配前面的字符或子表达式。ai+
与“ai”和“aii”匹配,但与“a”不匹配。?零次或一次匹配前面的字符或子表达式。当?
紧随任何其他限定符(*、+、?、{n}、{n,}或{n,m})之后时,匹配模式是非贪婪的。
非贪婪模式匹配搜索到的、尽可能少的字符串,
而默认的贪婪模式匹配搜索到的、尽可能多的字符串。zo?
与“z”和“zo”匹配,但与“zoo”不匹配。o+?
只与“oooo”中的单个“o”匹配,而
o+
与所有“o”匹配。do(es)?
与“do”或“does”中的“do”匹配^匹配搜索字符串开始的位置。
如果标志中包括
m(多行搜索)字符,^还将匹配\n或\r后面的位置。如果将^用作括号表达式中的第一个字符,则会对字符集求反。^\d{3}
与搜索字符串开始处的3个数字匹配。[^abc]
与除a、b和c以外的任何字符匹配。$匹配搜索字符串结尾的位置。
如果标志中包括
m(多行搜索)字符,^还将匹配\n或\r前面的位置。\d{3}$
与搜索字符串结尾处的3个数字匹配。.匹配除换行符\n之外的任何单个字符。
若要匹配包括\n在内的任意字符,请使用诸如
[\s\S]
之类的模式。a.c
与“abc”、“a1c”和“a-c”匹配。[]标记括号表达式的开始和结尾。[1-4]
与“1”、“2”、“3”或“4”匹配。
[^aAeEiIoOuU]与任何非元音字符匹配。{}标记限定符表达式的开始和结尾。a{2,3}
与“aa”和“aaa”匹配。()标记子表达式的开始和结尾。
可以保存子表达式以备将来之用。A(\d)
与“A0”至“A9”匹配。
保存该数字以备将来之用。|指示在两个或多个项之间进行选择。z|food
与“z”或“food”匹配。
(z|f)ood与“zood”或“food”匹配。/表示JScript中的文本正则表达式模式的开始或结尾。
在第二个“/”后添加单字符标志可以指定搜索行为。/abc/gi
是与“abc”匹配的JScript文本正则表达式。g(全局)标志指定查找模式的所有匹配项,i(忽略大小写)标志使搜索不区分大小写。\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。\n
与换行符匹配。
\(
与“(”匹配。
\\
与“\”匹配。\b与一个字边界匹配;即字与空格间的位置。er\b
与“never”中的“er”匹配,但与“verb”中的“er”不匹配。\B非边界字匹配。er\B
与“verb”中的“er”匹配,但与“never”中的“er”不匹配。\d数字字符匹配。等效于
[0-9]。在搜索字符串“12345”中,\d{2}与“12”和“34”匹配。
\d与“1”、“2”、“3”、“4”和“5”匹配。\D非数字字符匹配。等效于
[^0-9]。\D+
与“abc123def”中的“abc”和“def”匹配。\w与以下任意字符匹配:A-Z、a-z、0-9和下划线。等效于
[A-Za-z0-9_]。在搜索字符串“Thequickbrownfox…”中,\w+与“The”、“quick”、“brown”和“fox”匹配。\W与除A-Z、a-z、0-9和下划线以外的任意字符匹配。等效于
[^A-Za-z0-9_]。在搜索字符串“Thequickbrownfox…”中,\W+
与“…”和所有空格匹配。[xyz]字符集。
与任何一个指定字符匹配。[abc]
与“plain”中的“a”匹配。[^xyz]反向字符集。
与未指定的任何字符匹配。[^abc]
与“plain”中的“p”、“l”、“i”和“n”匹配。[a-z]字符范围。
匹配指定范围内的任何字符。[a-z]
与“a”到“z”范围内的任何小写字母字符匹配。[^a-z]反向字符范围。
与不在指定范围内的任何字符匹配。[^a-z]
与不在范围“a”到“z”内的任何字符匹配。{n}正好匹配
n
次。
n
是非负整数。o{2}
与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。{n,}至少匹配
n
次。
n
是非负整数。*
与
{0,}
相等。+
与
{1,}
相等。o{2,}
与“Bob”中的“o”不匹配,但与“foooood”中的所有“o”匹配。{n,m}匹配至少
n
次,至多
m
次。
n
和
m
是非负整数,其中
n
<=
m。
逗号和数字之间不能有空格。?
与
{0,1}
相等。在搜索字符串“1234567”中,\d{1,3}与“123”、“456”和“7”匹配。注意:若要匹配这些特殊字符之一,必须首先转义字符,即,在字符前面加反斜杠字符(\)。例如,若要搜索“?”文本字符,可使用表达式“\?”。例如:Pattern1="[a-zA-Z0-9]{6,10}"上面正则表达式表示该字符串由英文、数字组成,且长度为6-10个字符。Pattern2="[1][3579]\\d{9}"上面正则表达式表示该字符串第一位是1,第二位是3579中的一个,后面跟9位数字。Pattern3="[1-9]\\d{5,10}"知识点2-正则表达式的常用函数Python语言通过标准库中的re模块支持正则表达式Re模块提供了一些根据正则表达式进行查找、替换、分割字符串的函数,这些函数使用一个正则表达式作为第一个参数。Re模块常用的函数如表2.4所示。表2.4re模块常用的函数函数描述match(pattern,string,flags=0)根据pattern从string的头部开始匹配字符串,只返回第1次匹配成功的对象;否则,返回Nonefindall(pattern,string,flags=0)根据pattern在string中匹配字符串。如果匹配成功,返回包含结果的列表;否则,返回空列表。当pattern中有分组时,返回包含多个元组的列表,每个元组对应1个分组。Falgs表示规则选项,规则选项用于辅助匹配。sub(pattern,repl,string,count=0)根据指定的正则表达式,替换源字符中的子串。Pattern是一个正则表达式,repl是用于替换的字符串,string是源字符串。如果count等于0,则返回sring中匹配的的所有结果;如果count大于0,则返回前count个匹配结果。subn(pattern,repl,string,count=0)作用和sub()相同,返回一个二元的元组。第1个元素是替换结果,第2个元素是替换的次数。search(pattern.flags=0)根据pattern在string中匹配字符串,只返回第一次匹配成功的对象。如果匹配失败,返回Nplie(pattern,flags=0)编译正则式pattern,返回1个pattern的对象。split(pattern,string,maxplit=0)根据pattern分隔string,maxplit表示最大的分隔数。escape(pattern)匹配字符串中的特殊字符,如*、+、?等(1)match()方法re.match()尝试从字符串的起始位置开始匹配一个模式,如果不是起始位置匹配成功的话,就返回None,否则返回一个对象,函数原型为:re.match(pattern,string,flag=0)函数的参数说明如下表2.5所示:表2.5match函数参数说明参数描述pattern匹配的正则表达式string要匹配的字符串flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等。也可以理解成修饰符,具体修饰符参阅表2.6所示。正则表达式在使用中还用到修饰符,修饰符也叫标记,标记用于指定额外的匹配策略。标记不写在正则表达式里,标记位于\t"/weixin_43366084/article/details/_blank"表达式之外,常用的正则表达式修饰符如表2.6所示。表2.6正则表达式修饰符修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别匹配re.M多行匹配,影响^和$re.S使.匹配包括换行在内的所有字符re.U根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B.re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。对match()函数的使用,举例如下。01importre02str1=""03str2="www"04str3="com"05print(re.match(str2,str1,re.I))06print(re.match(str3,str1))01行导入re模块,02~04行定义三个字符串;05行求www是否在字符串str1的开始位置得到了匹配,在匹配过程中,忽略大小写,如果得到了匹配,返回匹配的开始和结束位置;06行表示求字符串com是否在str1的开始位置得到了匹配。运行程序,结果如图:图2.15match()函数匹配举例由运行结果可知,字符串str2在字符串str1的开始位置得到了匹配,返回了匹配的开始和结束位置(0,3),这个区间是一个左闭右开区间,表示匹配的位置是0、1、2三个位置;字符串str3在字符串str1的开始位置没有得到匹配,故返回为None。(2)search()方法search扫描整个字符串并返回第一个成功的匹配,如果匹配失败,则返回None,该方法的原型为:re.search(pattern,string,flags=0)pattern参数表示正则中的模式字符串;string参数表示要被查找替换的原始字符串;flags参数表示标志位,用于控制正则表达式的匹配方式。01importre02str1=""03str2="www"04str3="com"05str4="baidu"06print(re.search(str2,str1,re.I))07print(re.search(str3,str1))08print(re.search(str4,str1))01行导入re模块,02~05行定义四个字符串;06行表示在起始位置匹配,且不区分大小写;07行不在始位置匹配查找com字符串是否在str1字符串中存在,08行在str1字符串中查存在有str4字符串。运行程序,结果如图2-16所示。图2-16match()函数匹配举例(3)findall()方法findall方法与search方法比较类似,findall方法可以遍历匹配,可以获取字符串中所有匹配的字符串,将找到的结果返回到一个列表中,如果找不到,返回的是一个空列表,该函数的原型为:findall(pattern,string,flags=0)pattern参数表示正则中的模式字符串,就是正则表达式;string参数表示要被查找替换的原始字符串;flags参数表示标志位,用于控制正则表达式的匹配方式。注意:findall()函数是逐行匹配的。返回string中所有与pattern相匹配的全部字串,返回形式为列表。举例如下:01importre02str1=",WWW.G.CN"03str2="www"04str3="com"05str4="baidu"06print(re.findall(str2,str1,re.I))07print(re.findall(str3,str1))08print(re.findall(str4,str1))09print(re.findall("GG",str1))01行导入re模块;02~05行定义字符串;06~08行进行各种位置的匹配查找;09行表示在str1字符串中查找字符串GG。运行程序,结果如图2-17所示。图2-17findall()函数的使用(4)sub()函数Python的re模块提供了re.sub用于替换字符串中的匹配项,该函数将匹配上的字符串替换成指定的字符串,返回新的字符串,该函数的原型为:sub(pattern,repl,string,count=0,flags=0)参数说明:pattern:正则表达式。repl:替换的字符串,也可以是一个函数。string:要被查找替换的原始字符串。count:模式匹配后替换的最大次数,默认0表示替换所有的匹配。flags:编译时用的匹配模式,数字形式。注意:sub()函数的前三个参数为必填参数,后两个参数为可选参数。举例如下:01importre02phone="400-889-9315#这是美的售后客服电话"03#删除注释04num=re.sub(r'#.*$',"",phone)05print("美的客服电话为:",num)06#将非数字的‘-’去掉07num=re.sub(r'\D',"",phone)08print("美的客服电话为:",num)注意:python中,字符串前面加r或者R前缀,目的是禁用转义符“\”的功能。运行程序,结果如图2-18所示。图2-18re.sub()函数的使用知识点3-正则表达式提取内容实例将前面伟大抗疫精神网页的的“生命至上、举国同心、舍生忘死、尊重科学、命运与共”二十字精神使用Re正则表达式给提取出来。01str1='''02<divclass="container">03<h2>伟大抗疫精神精神内涵解读</h2>04<divclass="spirit">05<p>生命至上</p>06<p>举国同心</p>07<p>舍生忘死</p>08<p>尊重科学</p>09<p>命运与共</p>10</div>11<divclass="interpret">12<p>13伟大抗疫精神,同中华民族长期形成的特质禀赋和文化基因一脉相承,是爱国主义、集体主义、社会主义精神的传承和发展,是中国精神的生动诠释,丰富了民族精神和时代精神的内涵。我们要在全社会大力弘扬伟大抗疫精神,使之转化为全面建设社会主义现代化国家、实现中华民族伟大复兴的强大力量。14</p>15</div>16'''17importre18str1=re.sub('\n','',str1)19part1=pile(r'<divclass="spirit">(.*?)</div>',re.I|re.S|re.M)20part2=pile(r'<p>(.*?)</p>',re.I|re.S|re.M)21result1=part1.findall(str1)[0]22#sub(模型,替换为的字符,目标原字符串,替换次数)23result1=re.sub('<p>|</p>',"",result1)#替换输出结果中的<p>和</p>标记24result2=part2.findall(str1)25print(result1)26foriinrange(0,len(result2)-1):#循环减少1,去掉最后一个p标记27print(result2[i])01~16行是定义的网页的内容,将网页的内容放到了str1中;17行导入re模块;18行去掉字符串中的换行符;19行定义将类名等于spirit的div中的内容提取的规则part1;20行将定义将p标签内容进行提取的规则part2;21行使用findall()方法使用part1规则将类名等于spirit的div中的内容提取出来,将结果放到了result1变量中;23行将result1中的p标签使用空格替换到;24行将str1字符串中的包含了p标签的内容提取出来,放到变量reuslt2变量中;25行打印输出result1变量的值;26行对result2进行遍历;27行打印输出每次遍历的结果。运行程序,结果如图2-21。图2-21提取出来的关键字内容四、上机练习上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。上机一:(熟悉Python环境变量的设置)上机二:(使用pygame播放音乐)五、归纳总结教师回顾本节课所讲的内容,并通过实现Pygame实现音乐播放的方式引导学生解答问题并给予指导。六、布置作业教师通过高校教辅平台(/)布置本节课作业以及下节课的预习作业。作业布置教材项目二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冶金企业安全生产交流材料考核试卷
- 智能消费设备的创新设计方法考核试卷
- 托儿所服务的科学与探索考核试卷
- 搪瓷制品的防水与阻燃性能考核试卷
- 《农业科技人才服务漳县乡村产业振兴研究》
- 《民办培训机构绩效管理的问题与对策研究》
- 《基于转录组分析大口黑鲈抗菌免疫反应机制研究》
- 2024年石墨及炭素制品项目立项申请报告
- 2024-2030年中国畜禽养殖业需求规模与投资盈利前景预测报告
- 2024年VR虚拟项目申请报告
- 质控图与质控规则
- 小学科学月相变化(课堂PPT)
- 《登泰山记》理解性默写-精心整理
- 经纬度计算和转换工具
- 大口径三通、大小头理论重量表
- 模具开发DFMEA失效模式分析
- 翁秀美窗外的树阅读题答案
- THL520电话交换机说明书
- 职工食堂承包投标书范本
- 色谱柱Agilent安捷伦化色谱柱介绍
- 不动产登记表.doc
评论
0/150
提交评论