Python网络爬虫项目式教程 课件 项目1、2 Python网络爬虫、使用正则表达式提取网页中内容_第1页
Python网络爬虫项目式教程 课件 项目1、2 Python网络爬虫、使用正则表达式提取网页中内容_第2页
Python网络爬虫项目式教程 课件 项目1、2 Python网络爬虫、使用正则表达式提取网页中内容_第3页
Python网络爬虫项目式教程 课件 项目1、2 Python网络爬虫、使用正则表达式提取网页中内容_第4页
Python网络爬虫项目式教程 课件 项目1、2 Python网络爬虫、使用正则表达式提取网页中内容_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一保存服务器网页到本地

项目要

求本项目是了解爬虫的概念、分类等,同时掌握Python网络爬虫的开发环境的搭建,使用Urilib3库请求服务器上的网页,将网页保存到本地。

项目分

析要完成项目任务,至少需要具备两个基本条件:一是需要在计算机上安装和配置Python开发环境,然后要了解Urilib3库最简单使用,该项目分2个任务,分别是认识爬虫和将请求到的网页保存到本地。

项目目

标【知识目标】熟悉网络爬虫的基本概念,掌握Python和Mongondb以及MySQL数据库的安装与配置。【能力目标】会安装Python网络开发环境和将服务器网页保存到本地。【素质目标】提高学生的发现问题、分析问题、解决问题的能力。

知识导

图任务一认识爬虫及Python的安装--任务演示本任务是初步认识爬虫,认识爬虫的概念、爬虫的分类、爬虫的作用、爬虫开发中的法律和道德问题,然后开始安装Python的开发环境,输出“我亲爱的祖国我永远紧依着你的心窝!”,同时播放“我和我的祖国”歌曲。任务一

认识爬虫及Python的安装–知识准备Python的安装pygame的简单使用使用pygame播放歌曲网络爬虫的基本概念1.网络爬虫的基本概念爬虫产生的背景目前的互联网已经迈入大数据时代,通过对海量的数据进行分析,能够产生极大的商业价值。1.网络爬虫的基本概念爬虫产生的背景数据分析应用反馈数据采集1.网络爬虫的基本概念爬取的网络数据1.网络爬虫的基本概念结论

无论是搜索引擎,还是个人或单位获取目标数据,都需要从公开网站上爬取大量数据,在此需求下,爬虫技术应运而生,并迅速发展成为一门成熟的技术。1.网络爬虫的基本概念什么是爬虫?1.网络爬虫的基本概念什么是爬虫如果说网络像一张网,那么爬虫就是网上的一只小虫子,在网上爬行的过程中遇到了数据,就把它抓取下来。1.网络爬虫的基本概念爬虫的定义网络爬虫,很多地方也称为网页蜘蛛,是一种按照一定的规则,按照某种规则自动爬取互联网信息的程序或脚本。像谷歌搜索引擎、百度搜索引擎等就是典型的爬虫,这些搜索引擎将互联网上海量的网页信息进行爬取,将爬到的每个网页上信息进行复制,然后将该信息保存到自己所在的服务器上,然后对爬取到的数据按照某种规则,进行必要的处理。1.网络爬虫的基本概念爬虫的定义

这里的数据是指互联网上公开的并且可以访问到的网页信息,而不是网站的后台信息(没有权限访问),更不是用户注册的信息(非公开的)。1.网络爬虫的基本概念爬虫的作用思考爬虫具体能做些什么呢?爬虫的作用1.网络爬虫的基本概念爬虫的作用1.网络爬虫的基本概念爬虫的作用1.网络爬虫的基本概念爬虫的分类-按照使用场景进行分类通用爬虫聚焦爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关的页面的网络爬虫。又称全网爬虫,将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。1.网络爬虫的基本概念爬虫的分类-按照爬取形式分类累积式爬虫聚焦爬虫在具有一定量规模的网络页面集合的基础上,采用更新数据的方式选取已有集合中的过时网页进行抓取,以保证所抓取到的数据与真实网络数据足够接近。累积式爬虫是指从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的所有网页。1.网络爬虫的基本概念爬虫的分类-按照爬取数据的存在方式分类表层爬虫深层爬虫爬取深层网页的爬虫就叫做深层爬虫。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。爬取表层网页的爬虫叫做表层爬虫。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。2.Python的安装Python的安装包,可以直接从官网下载,Python下载地址:/,单击单击点击Downloads下选择Widows,再选择Python的版本下载。这里版本主要分成3个版本:embeddablezipfile-解压版:解压后配置环境变量就可以直接使用;executableinstaller-安装版:需要安装并配置环境变量才能使用;web-basedinstaller-在线安装版:需要连接网络安装,3个版本如图1-7所示。x86代表32位,x86-64代表64位,根据您的计算机系统是32位系统还是64位系统选择下载。2.Python的安装安装步骤:(1)双击包装包文件准备安装,如图所示。

2.Python的安装安装步骤:(2)选择InstallNow(默认安装方式),一路点下去,完成安装,如图所示。

2.Python的安装配置环境变量:(1)在计算机上右击,选择属性,如图。

2.Python的安装配置环境变量:(2)在弹出对话框上左键单击“高级系统设置”,如图所示。

2.Python的安装配置环境变量:(3)在高级面板中,选择系统变量中的Path,点编辑,如图所示。

2.Python的安装配置环境变量:(4)请注意配置环境变量,将“;C:\Python37;C:\Python37\Scripts;”(注意,复制双引号中间的内容,不要复制双引号)复制到环境变量中的系统变量的Path变量的最后边位置上去,如图所示。

2.Python的安装测试:按下键盘上的win+R键,调出运行窗口,在运行窗口中输入cmd回车,在cmd下输入python-V,可以看到Python的版本号。

3.pygame的简单使用pygame本身是用来开发游戏的,这里使用该框架来播放mp3格式的音频文件。要使用该框架,可以使用如下命令进行安装:pipinstallpygame该框架主要使用到了如下方法和模块。(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的简单使用(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等格式。4.使用pygame播放歌曲代码实现:01importpygame02importtime03if__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()任务一认识爬虫及Python的安装–任务拓展1.爬虫与反爬虫很多网络爬虫对网页的爬取能力很差,现在的网站会采取一些防爬虫措施来阻止爬虫的不当爬取行为。任务一认识爬虫及Python的安装–任务拓展1.爬虫与反爬虫对于采取了防爬虫措施的网站,爬虫程序需要采取相应的应对策略,才能成功地爬取到网站上的数据。任务一认识爬虫及Python的安装–任务拓展1.爬虫与反爬虫使用代理IP

使用代理IP的一个好处是可以匿名保护,使用数据中心代理后,使用的IP地址将是您选择的服务器的IP地址,隐藏您的真实IP地址,从而保护您的互联网隐私,使得服务器认为是真实的用户在访问,使得服务器认定不是爬虫行为。任务一认识爬虫及Python的安装–任务拓展1.爬虫与反爬虫伪装User-agentUser-agent表示用户代理,是HTTP协议中的一个字段,其作用是描述发出HTTP请求的终端信息。每个正规的爬虫都有固定的User-agent,只要将这个字段设为知名的用户代理,就能够成功伪装。任务一认识爬虫及Python的安装–任务拓展1.爬虫与反爬虫降低访问频率User-agent表示用户代理,是HTTP协议中的一个字段,其作用是描述发出HTTP请求的终端信息。每个正规的爬虫都有固定的User-agent,只要将这个字段设为知名的用户代理,就能够成功伪装。任务二将请求到的网页保存到本地--任务演示本任务在Python环境搭建的基础上,使用urllib库,将请求到的网页保存到本地。任务二将请求到的网页保存到本地–知识准备安装和配置MySQL数据库简单使用urllib库1简单使用urllib库urllib是一个http请求的Python自带的标准库,无需安装,直接可以用。并且提供了如下功能:网页请求、响应获取、代理和cookie设置、异常处理、URL解析,可以说是一个比较强大的模块。urllib.request的GET请求是如下方式:urllib.request.urlopen(url,data,timeout)url:请求地址data:请求数据timeout:请求超时时间data和timeout为可选参数,可以为空,也就是说可以不写。1简单使用urllib库【例】使用urllib库请求网页。importurllib.requestresponse=urllib.request.urlopen('/u_13389043/3153863')print("此时的数据类型为:"+str(type(response)))response=response.read().decode('utf-8')print("编码以后的数据类型为:"+str(type(response)))1简单使用urllib库【例】使用urllib库请求网页。importurllib.requestresponse=urllib.request.urlopen('/u_13389043/3153863')print("此时的数据类型为:"+str(type(response)))response=response.read().decode('utf-8')print("编码以后的数据类型为:"+str(type(response)))2安装和配置MySQL数据库网络爬虫采集到数据以后,一般是放到数据库进行保存。数据库的选择一般有SQLite、MySQL、以及MongoDB等数据库。这里首先介绍MySQL数据库的安装。这里以Mysql社区版mysql-installer-community-,在64位系统Windows系统安装为例,给出其具体的安装步骤。2安装和配置MySQL数据库1)双击打开msi安装包,勾选接收许可安装条款,单击“Next”按钮后进入安装选择,如图所示。2安装和配置MySQL数据库2)在弹出框中选择64位版本,如图所示。2安装和配置MySQL数据库3)在下方左侧栏内选择需要安装的程序,单击右箭头移至安装栏内,如图所示。2安装和配置MySQL数据库4)单击“Next”按钮后,会检测系统上是否安装有相关依赖的软件,若没有安装,则会出现类似下图所示的界面,如图所示。2安装和配置MySQL数据库5)单击“Next”按钮后,进入安装确认步骤,将被安装的程序会显示在框内,单击“Execute”按钮将开始安装过程,如图所示。2安装和配置MySQL数据库6)安装完成后,还需配置服务,一般用户类型选择“DevelopmentMachine”,MySQL的默认端口为3306,如图所示。2安装和配置MySQL数据库7)设置root账户的密码,可添加一个具有普通用户权限的MySQL用户账户,也可不添加,如图所示。2安装和配置MySQL数据库8)勾选“ConfigureMySQLServerasaWindowsService”后将以系统用户运行Windows服务,在Windows下MySQL默认服务名为mysql56,如图所示。2安装和配置MySQL数据库9)最后进入服务配置应用步骤,单击“Execute”按钮将开始执行,如图所示。2安装和配置MySQL数据库10)执行成功的服务配置将变为绿色的勾选状态,单击“Finish”按钮完成配置过程,如图所示。2安装和配置MySQL数据库11)打开“环境变量”对话框。右键单击“我的电脑”图标,单击“高级系统设置”按钮,在弹出的“系统属性”对话框中单击“环境变量”按钮,即可弹出的“环境变量”对话框,如图所示。2安装和配置MySQL数据库12)新建环境变量“MYSQL_HOME”,变量值填写“C:\ProgramFiles\MySQL\MySQLServer5.6”,其中MySQL默认安装在C:\ProgramFiles路径下,如图所示。2安装和配置MySQL数据库13)在“Path”变量后面添加“%MYSQL_HOME%\bin”,如图所示。2安装和配置MySQL数据库14)检验环境配饰是否生效,使用管理员权限运行命令提示符,使用“netstartmysql56”命令启动MySQL服务,使用“netstopmysql56”可关闭MySQL服务,如图所示。任务二将请求到的网页保存到本地–任务实施对目标网页url=“/2019/09/04/ARTI9r6wRsrNhbZv4DwlWC5T190904.shtml”使用urllib库发起请求,将网页的响应数据保存到本地,然后实现本地可以浏览访问。这里可以将该网页的css文件也发起一次请求,可以将本地文件也保存到本地。这样,这里一共需要两次发起网页请求,两次保存网页的操作,这里给出实例代码。importurllib.requestlist1=['/2019/09/04/ARTI9r6wRsrNhbZv4DwlWC5T190904.shtml','/photoAlbum/templet/common/DEPA1452765360136771/style_arti.css']defsave_data():foriinrange(0,2):response=urllib.request.urlopen(list1[i])response=response.read().decode('utf-8')ifi==0:f=open("./gzzq.html","w",encoding="utf-8")#保存网页f.write(response)else:f=open("./index.css","w",encoding="utf-8")#保存CSSf.write(response)save_data()任务二将请求到的网页保存到本地–任务实施对目标网页url=“/2019/09/04/ARTI9r6wRsrNhbZv4DwlWC5T190904.shtml”使用urllib库发起请求,将网页的响应数据保存到本地,然后实现本地可以浏览访问。这里可以将该网页的css文件也发起一次请求,可以将本地文件也保存到本地。这样,这里一共需要两次发起网页请求,两次保存网页的操作,这里给出实例代码。

虽然将网页css保存到了本地,打开网页是可以正常浏览的,应为原始网页只有一个css文件,且该文件使用的是绝对路径的网址,如图所示。任务二将请求到的网页保存到本地–任务实施

虽然将网页css保存到了本地,打开网页是可以正常浏览的,应为原始网页只有一个css文件,且该文件使用的是绝对路径的网址,如图所示。程序的运行结果如图。任务二将请求到的网页保存到本地–任务拓展

虽然将网页css保存到了本地,打开网页是可以正常浏览的,应为原始网页只有一个css文件,且该文件使用的是绝对路径的网址,如图所示。使用urllib库向指定网址“/get”发起请求,将返回的响应头保存到数据库,使用下面代码创建数据库表。--数据库:`httpbin`----------------------------------------------------------------表的结构`httpbindata`--CREATETABLEIFNOTEXISTS`httpbindata`(`id`int(20)NOTNULLAUTO_INCREMENT,`data`textNOTNULL,PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=2;----转存表中的数据`httpbindata`--任务二将请求到的网页保存到本地–任务拓展这里给出Python的代码。importpymysqlimporturllib.requesturl='/get'response=urllib.request.urlopen(url)response=response.read().decode('utf-8')conn=pymysql.Connect(host='',port=3306,user='root',password='root',db='httpbin')cursor=conn.cursor()#获取游标sql="insertintohttpbindata(data)values(%s);"print(response)try:cursor.execute(sql,(response))mit()print("数据插入成功")exceptExceptionasresult:print("数据插入失败:"+str(result))谢谢项目二使用正则表达式提取网页中内容

项目要

求本项目学习正则相关的知识,将保存到本地的网页使用正则表达式提取有用的信息。

项目分

析要实现此任务,需要有HTML、CSS、JSON、JavaScript等知识,同时还需要了解HTTP请求的相关知识,网页信息获取过程需要一些解析工具以及正则表达式的知识,同时还需要网页开发相关的知识。本项目介绍Web初步知识、HTTP请求、正则表达式等。

项目目

标【知识目标】熟悉HTML,掌握CSS和Javascipt的基础知识以及Re正则表达式。【能力目标】会使用正则表达式提取网页中的内容。【素质目标】提高学生的发现问题、分析问题、解决问题的能力。

知识导

图任务一网页展示伟大抗疫精神--任务演示本任务是使用CSS基础知识,展示伟大抗疫精神,下图图片实现的效果。任务一

认识爬虫及Python的安装–知识准备CSS基础知识CSS样式选择器HTML基础知识1.HTML基础知识HTML(HyperTextMarkupLanguage)称为超文本标记语言,是一种描述文档结构的标记语言,它是一种应用非常广泛的网页格式,也是最早被用来显示网页的语言之一。注意:HTML不是编程语言,它只是一门网页标记语言。Web浏览器能读懂HTML文件,并以网页显示显示出来。1.HTML基础知识(1)标记的格式HTML中的标记的主要作用是用来控制网页的显示方式,标记一般有<…>和</…>组成,<…>一般是标记的开头,中间的省略号表示其他字符串,</…>表示标记的结束。标记分为双标记和单标记。双标记要求<…>和</…>成对出现,典型的标记如下:<html>…</html><html>表示一个网页的开始,</html>表示网页的结束,中间的省略号表示网页的具体内容,包含若干除<html>…</html>之外的标记和若干文字、图片、视频等内容。<head>…</head><head>表示一个网页的头部,</head>表示网页头部结束,中间的省略号表示一个网页的头部的内容。1.HTML基础知识<title>…</title><title>表示一个网页的标题的开始,</title>表示一个网页的标题的结束。中间的省略号表示这个网页标题的实际内容,该内容要求是文字内容。<body>…</body><body>表示一个网页主体的开始,</body>表示一个网页主体的结束,中间的省略号表示这个网页主体的实际内容,这个内容可以包含若干标记和文字、图片、视频等内容。1.HTML基础知识(2)标记的使用可以按照以下三种方式使用标记。1)<标记名>文本或超文本</标记名>举例如下:<title>百度首页</title>注意:超文本是用超链接的方法,将各种不同的位置的文字信息组织在一起,形成一个网状文本。这里超练级是指链接的载体和链接的目标地址两个部分的内容。链接的载体指的是显示链接的部分,即包含超链接的文字或图像。链接的目标是指单击超链接后所显示的内容。例如<ahref=“/”>百度</a>就构成了一个超链接。2)<标记名属性名1=“属性值1”属性名2=“属性值2”>文本或超文1.HTML基础知识3)<标记名>举例如下:<hr>该标签表示在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>2.CSS基础知识如果我们把它放到一个网页中,会是什么样的一个效果呢?<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>我的首页</title></head><body><pstyle="font-size:16px;color:red">这是一段文字</p></body></html>2.CSS基础知识运行程序,效果如下。2.CSS基础知识2)内部样式表什么是内部样式表呢?内标样式表是在HTML中的head标签中定义style标签,在其中书写样式。内部样式表意味着CSS样式存在HTML的内部,作用范围是只对所在的网页有效。2.CSS基础知识

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>我的首页</title><styletype="text/css">p{font-size:20px;color:blue;}</style></head><body><p>这是一段文字</p></body></html>注意:内部样式表只是实现了CSS和HTML的部分分离,没有实现完全分离。2.CSS基础知识3)外部样式表外部样式表顾名思义,是将样式表和HTML文件完全分离。在HTML文件内部,一般借助于link标签将CSS引入。index.html文件的内容如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>我的首页</title><linkrel="stylesheet"type="text/css"href="style.css"></head><body><p>这是一段文字</p></body></html>2.CSS基础知识3)外部样式表style.css文件的内容如下:p{font-size:24px;color:green;text-align:center;}注意:index.html文件和style.css文件应该确保在同一个目录下。外部样式表可以同时作用到多个HTML文件。运行程序,结果如下:3.CSS选择器3)外部样式表什么是选择器呢?每一条css样式定义由两部分组成,形式如下:选择器{样式}在{}之前的部分就是“选择器”。“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。CSS主要四种基本选择器,他们分别是标签选择器、类选择器、ID选择器以及通用选择器。3.CSS选择器(1)CSS标签选择器一个完整的HTML页面是有很多不同的标签组成,而标签选择器,则是决定哪些标签采用相应的CSS样式。CSS标签选择器主要有div、h1、p、body、ul、li等等,下面通过一个例子来加以说明。3.CSS选择器<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><styletype="text/css">h1{text-align:center;}p{text-indent:2em;line-height:26px;font-size:16px;}</style><title>韩国使用高科技公交车候车亭对抗新冠疫情</title></head><body><h1>韩国使用高科技公交车候车亭对抗新冠疫情</h1><p>韩国正在使用高科技的公共汽车候车亭来防止Covid-19的传播。这10个"智能候车亭"配备了用于检查温度的外部热像仪和内部的紫外线消毒灯。首都首尔市城东区主要公交线路沿线都安装了太阳能供电的候车亭。乘客必须站在一个自动热成像摄像头前,只有当检测到温度低于99.5F时,滑动门才会打开。下方还安装有另一个摄像头,用于检测儿童。</p><p>玻璃板结构内有紫外线灯,还有空调、洗手液分配器和免费无线网络。此外,还设有大型显示屏,显示公交车的预计到站时间和附近的交通情况。即使有这些预防措施,也建议乘客随时戴上口罩,并保持至少一米的距离。每个公共汽车候车亭每天约有300至400人使用。</p></body></html>3.CSS选择器运行程序,结果如下:3.CSS选择器(2)类选择器类选择用使用"."(英文点号)进行标识,后面紧跟类名。.news_title{text-align:center;}3.CSS选择器运行程序,结果如下:3.CSS选择器(3)CSS的ID选择器类选择用使用"#"(英文点号)进行标识,后面紧跟ID名。#news_title{text-align:center;}3.CSS选择器运行程序,结果如下:3.CSS选择器(4)通用选择器通用选择器可以选择页面上的所有元素,并对它们应用样式,用*来表示,下面通过一个例子加以说明。3.CSS选择器运行程序,结果如下:任务一认识爬虫及Python的安装–任务实施

根据前面所学习的知识,我们这里设计一个网页,来对中国伟大抗疫精神作一个展示,这里给出参考代码。参考代码请参考教材。任务一认识爬虫及Python的安装–任务拓展

有了CSS的基本知识以后,这里再简单介绍一下JavaScript的基础知识。JavaScript语言的引入主要有网页中直接插入和外部引入两种方式。(1)网页中直接插入任务一认识爬虫及Python的安装–任务拓展

有了CSS的基本知识以后,这里再简单介绍一下JavaScript的基础知识。JavaScript语言的引入主要有网页中直接插入和外部引入两种方式。(1)网页中直接插入任务一认识爬虫及Python的安装–任务拓展运行程序,结果如图所示。任务一认识爬虫及Python的安装–任务拓展

(2)网页中从外部引入JavaScript代码

引用外部JavaScript代码,可以是JavaScript代码和HTML文件相分离、一个JavaScript文件可被多个HTML文件使用,同时使得JavaScript代码的维护也更加方便。外部引用JavaScript文件,是使用script的src属性,设置JavaScript文件的URL就可以了。<scriptsrc=“xxx.js”></script>任务一认识爬虫及Python的安装–任务拓展把上个例子中的JavaScript代码抽成一个JavaScript文件,名字为demo.js,具体代码如下:

varnum=0;functionfun(id){vars=document.getElementById(id).value;num=num+1;alert(s+"我被点击了"+num+"次");}任务一认识爬虫及Python的安装–任务拓展<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><scriptsrc="demo.js"></script>为button绑定点击事件:<divclass="box1"><inputtype="button"onclick="fun(this.id)"id="a"class="btn1"value="统计点击次数,请点我"></div></body>任务一认识爬虫及Python的安装–任务拓展<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><scriptsrc="demo.js"></script>为button绑定点击事件:<divclass="box1"><inputtype="button"onclick="fun(this.id)"id="a"class="btn1"value="统计点击次数,请点我"></div></body>任务一认识爬虫及Python的安装–任务拓展运行程序,结果如下:任务二使用正则表达式提取指定的内容--任务演示本任务是给定了一个字符文本,该文本由若干英文单词组成,每个英文单词由空格进行了分割,请使用正则表达式将所有的单词给提取出来,如图所示。任务二将请求到的网页保存到本地–知识准备正则表达式的使用正则表达式的基本语法1正则表达式的基本语法Python语言通过标准库中的re模块支持正则表达式Re模块提供了一些根据正则表达式进行查找、替换、分割字符串的函数,这些函数使用一个正则表达式作为第一个参数。Re模块常用的函数如表所示。函数描述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中匹配字符串,只返回第一次匹配成功的对象。如果匹配失败,返回None。complie(pattern,flags=0)编译正则式pattern,返回1个pattern的对象。split(pattern,string,maxplit=0)根据pattern分隔string,maxplit表示最大的分隔数。escape(pattern)匹配字符串中的特殊字符,如*、+、?等1正则表达式的基本语法(1)match()方法re.match()尝试从字符串的起始位置开始匹配一个模式,如果不是起始位置匹配成功的话,就返回None,否则返回一个对象,函数原型为:re.match(pattern,string,flag=0)函数的参数说明如下表所示:参数描述pattern匹配的正则表达式string要匹配的字符串flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等。也可以理解成修饰符,具体修饰符参阅表2.6所示。1正则表达式的基本语法(1)match()方法

正则表达式在使用中还用到修饰符,修饰符也叫标记,标记用于指定额外的匹配策略。标记不写在正则表达式里,标记位于表达式之外,常用的正则表达式修饰符如表所示。修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别匹配re.M多行匹配,影响^和$re.S使.匹配包括换行在内的所有字符re.U根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B.re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。1正则表达式的基本语法对match()函数的使用,举例如下。01importre02str1=""03str2="www"04str3="com"05print(re.match(str2,str1,re.I))06print(re.match(str3,str1))运行程序,结果如图:1正则表达式的基本语法(2)search()方法search扫描整个字符串并返回第一个成功的匹配,如果匹配失败,则返回None,该方法的原型为:re.search(pattern,string,flags=0)pattern参数表示正则中的模式字符串;string参数表示要被查找替换的原始字符串;flags参数表示标志位,用于控制正则表达式的匹配方式。1正则表达式的基本语法(2)search()方法看一个例子:01importre02str1=""03str2="www"04str3="com"05str4="baidu"06print(re.search(str2,str1,re.I))07print(re.search(str3,str1))08print(re.search(str4,str1))运行程序,结果如图。1正则表达式的基本语法(3)findall()方法findall方法与search方法比较类似,findall方法可以遍历匹配,可以获取字符串中所有匹配的字符串,将找到的结果返回到一个列表中,如果找不到,返回的是一个空列表,该函数的原型为:findall(pattern,string,flags=0)pattern参数表示正则中的模式字符串,就是正则表达式;string参数表示要被查找替换的原始字符串;flags参数表示标志位,用于控制正则表达式的匹配方式。注意:findall()函数是逐行匹配的。返回string中所有与pattern相匹配的全部字串,返回形式为列表。1正则表达式的基本语法看一个例子: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))运行程序,结果如下:1正则表达式的基本语法(4)sub()函数Python的re模块提供了re.sub用于替换字符串中的匹配项,该函数将匹配上的字符串替换成指定的字符串,返回新的字符串,该函数的原型为:sub(pattern,repl,string,count=0,flags=0)参数说明:pattern:正则表达式。repl:替换的字符串,也可以是一个函数。string:要被查找替换的原始字符串。count:模式匹配后替换的最大次数,默认0表示替换所有的匹配。flags:编译时用的匹配模式,数字形式。注意:sub()函数的前三个参数为必填参数,后两个参数为可选参数。1正则表达式的基本语法举例如下:01importre02phone="400-889-9315#这是美的售后客服电话"03#删除注释04num=re.sub(r'#.*$',"",phone)05print("美的客服电话为:",num)06#将非数字的‘-’去掉07num=re.sub(r'\D',"",phone)08print("美的客服电话为:",num)1正则表达式的基本语法举例如下:01importre02phone="400-889-9315#这是美的售后客服电话"03#删除注释04num=re.sub(r'#.*$',"",phone)05print("美的客服电话为:",num)06#将非数字的‘-’去掉07num=re.sub(r'\D',"",phone)08print("美的客服电话为:",num)注意:python中,字符串前面加r或者R前缀,目的是禁用转义符“\”的功能。运行程序,结果如图所示。1正则表达式的基本语法(5)compile()函数

在Pytohn使用正则表达式时,re模块内部会做两件事情:第一,是对正则表达式进行编译,如果此时正则表达式不合法,就会报错;第二,用编译好的正则表达式去匹配字符串。如果一个正则表达式使用的频率很高,那么,我们就有必要对该正则表达式先确保编译

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论