人工智能采集和分析基础(Python版)课件 学习单元四 XPath和re内容解析_第1页
人工智能采集和分析基础(Python版)课件 学习单元四 XPath和re内容解析_第2页
人工智能采集和分析基础(Python版)课件 学习单元四 XPath和re内容解析_第3页
人工智能采集和分析基础(Python版)课件 学习单元四 XPath和re内容解析_第4页
人工智能采集和分析基础(Python版)课件 学习单元四 XPath和re内容解析_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

任务1re解析

任务2XPath解析任务1re解析正则表达式主要用于文本数据,用来检索、替换符合某个规则的文本。本任务将使用re模块应用的正则表达式实现内容的解析,主要内容如下:(1)抓取页面;(2)内容截取;(3)数据提取。一、正则表达式概述正则表达式主要用于对字符串进行过滤,受到大多数程序设计语言的支持。在Python中,正则表达式对字符串的逻辑操作包含在re模块中,能够通过一个由“元字符”与“普通字符”组成的字符串规则,从已知的字符串或文本中选取符合规则的内容。正则表达式元字符如表4-1所示。【任务描述】【知识准备】其中,在组成正则表达式的字符中,默认情况下元字符按由左至右的顺序执行,但不同的字符在正则表达式中发生的作用有先后之分,元字符优先级为由上至下(见表4-1)。表4-2所示为一些常用的正则表达式。二、正则表达式的定义在re模块中,正则表达式在发挥作用之前,需要被定义。默认定义正则表达式有两种方式:一种是直接定义,只需在re模块提供的相关方法中,直接使用由“元字符”与“普通字符”组成的字符串规则利用re模块进行解释性地匹配。语法格式如下所示。r=r'正则表达式'另一种方式是通过re模块提供的compile()函数,将正则表达式字符串预编译成Pattern对象。与直接定义的方式相比,每次转换正则表达式,compile()函数只进行一次正则表达式对象的转换,之后不需转换即可直接使用该对象进行匹配。语法格式如下所示。importrer=pile(pattern,flags)其中,Pattern表示正则表达式字符串;flags用于设置匹配模式,如忽略大小写匹配、多行模式匹配等。需要注意的是,flags可以接受多个参数值,即可以设置多个匹配模式,参数值之间通过符号“|”连接。flags的常用参数值如表4-3所示。在使用compile()函数生成正则表达式后,结果会以Pattern对象的形式返回,这个对象是一个编译后的正则表达式,编译后不仅能够复用和提升效率,也能够通过相关属性获得正则表达式的多个信息。Pattern对象的常用属性如表4-4所示。三、正则表达式的使用在Python中,re模块提供了多个应用正则表达式操作字符串的方法,如字符串的查询、替换、分割等。常用的正则表达式应用方法如表4-5所示。1. match()在re模块中,match()方法可以从字符串的指定位置查找符合正则表达式的内容,也就是说,从起始位置就必须符合正则表达式的内容。如果匹配成功,则返回一个Match对象;如果匹配失败,则返回None。由于正则表达式的定义有两种方式,因此,match()方法在使用时同样有两种方法,语法格式如下所示。importre#方法一:直接使用正则表达式re.match(pattern,string,flags)#方法二:使用正则表达式对象r=pile(pattern,flags)r.match(string,pos,endpos)参数说明如表4-6所示。match()方法在直接使用正则表达式时,会从字符串的首字母进行匹配;而使用正则表达式对象时,则可以指定起始位置、结束位置进行匹配。在匹配完成后,返回Match对象,这个对象只包含一次正则匹配的结果,可以通过相关属性或方法获取match()包含的信息。Match对象的常用属性和方法如表4-7所示。2. search()search()方法从指定位置开始查找符合正则表达式的第一个内容,直到末尾,如果找到,则返回一个包含内容的Match对象,否则返回None。search()方法与match()方法的使用方法基本相同。语法格式如下所示。importrere.search(pattern,string,flags)#从指定位置开始匹配r=pile(pattern,flags)r.search(string,pos,endpos)另外,search()方法在直接使用正则表达式时,同样会从首字母开始;在使用正则表达式对象时,会从指定位置开始。3. findall()和finditer()与match()方法和search()方法相比,findall()方法和finditer()方法是从字符串中查找符合正则表达式的所有内容。其中,findall()方法将匹配结果以列表形式返回,而finditer()方法将匹配结果以迭代器形式返回,并且迭代器中包含了多个Match对象。另外,在使用方式上,findall()方法和finditer()方法也与match()和search()方法类似。代码如下所示。importrere.findall/finditer(pattern,string,flags)#从指定位置开始匹配r=pile(pattern,flags)r.findall/finditer(string,pos,endpos)4. split()在re模块中,split()方法用于实现分割操作,将符合正则表达式匹配的内容作为分隔符进行字符串的分割,并将分割后的内容以列表的形式返回。split()方法代码如下所示。importre#方法一:直接使用正则表达式re.split(pattern,string,maxsplit)#方法二:使用正则表达式对象r=pile(pattern,flags)r.split(string,maxsplit)参数说明如表4-8所示。5. sub()sub()方法用于实现替换操作,将符合正则表达式匹配的内容作为被替换内容进行字符串的替换操作,并将替换后的字符串返回。sub()方法代码如下所示。importre#方法一:直接使用正则表达式re.sub(pattern,repl,string,count)#方法二:使用正则表达式对象r=pile(pattern,flags)r.sub(repl,string,count)参数说明如表4-9所示。任务2XPath解析XPath是一种在XML、HTML文档中查找信息的语言,能够爬取网页数据并抽取信息。本任务介绍XPath的使用,主要内容如下:(1)抓取页面并解析;(2)内容查看;(3)信息定位;(4)信息提取。一、XPath简介XPath,即XML路径语言,是一种在XML文档中定位信息的语言,可以对XML文档中的元素和属性进行遍历。XPath不仅用于XML文档的搜寻,也适用于HTML等结构化文档的搜索。XPath提供简明的路径选择表达式,能够实现字符串、数值、时间的匹配以及节点、序列的处理等,所有需要定位节点的场景。【任务描述】【知识准备】在Python中,XPath包含在lxml库的etree模块下,lxml是一个解析库,对HTML和XML的XPath解析提供支持,解析效率非常高。在使用lxml前,需要在命令窗口输入“pipinstalllxml”命令进行下载安装lxml,如图4-10所示。目前,etree模块提供了多种用于解析XML、HTML等结构化文档的方法,如XPath的使用、文档结构化等。常用方法如表4-10所示。其中,HTML()、XML()和parse()方法是将接收包含结构化文档的内容解析成能够被xpath()方法进行标签的定位和内容捕获的Element对象。其中,HTML()方法用于解析HTML格式的文档,并对HTML文本进行修正,在使用时,只需提供需要被解析的字符串类型的HTML文档即可,代码如下所示。fromlxmlimportetreeetree.HTML(text,parser=None,base_url=None)参数说明如表4-11所示。XML()方法主要用于解析XML格式的文档,使用方式与HTML()方法相同,代码如下所示。fromlxmlimportetreeetree.XML(text,parser=None,base_url=None)parse()方法是接收本地文件,读取文件包含内容并对文档进行解析,代码如下所示。fromlxmlimportetreeetree.parse(source,parser=None,base_url=None)其中,source表示文件路径,这个文件可以是xml、html、txt等格式。在生成Element对象后,可以通过tostring()方法将其转换成byres类型,为Element对象的查看提供支持,并且,在该方法后加入“decode(')”方法即可将其转为字符串类型,代码如下所示。fromlxmlimportetreeetree.tostring(Element,pretty_print=True,encoding="utf-8")参数说明如表4-12所示。除Element对象的查看,还可以通过xpath()对Element对象进行解析,并通过由符号和方法组成的路径表达式查找指定节点元素并提取所需内容,将结果以列表的形式返回,且列表中每个元素均为Element对象,代码如下所示。fromlxmlimportetreeetree.xpath(path,namespaces=None,extensions=None,smart_strings=True)参数说明如表4-13所示。二、定位根据使用对象的不同,XPath有三种定位方式,分别是元素定位、属性定位和文本定位。1.元素定位在XPath中,元素定位是指根据路径表达式寻找符合表达式节点的指定子节点(元素),如获取所有元素、获取第一个元素等。元素定位常用符号如表4-14所示。在HTML中,根据节点之间的关系,可以将其分为父节点、子节点、同胞节点、先辈节点、后代节点等。XPath提供了可以根据节点关系进行元素定位的相关属性。常用属性如表4-15所示。代码如下所示。属性::路径表达式2.属性定位属性定位是指根据属性或属性值进行定位,如获取带有href属性的元素、获取带有符合条件属性的元素等。属性定位常用符号如表4-16所示。其中,条件表达式由属性、属性值和运算符组成。目前,XPath中常用的运算符包含算术运算符、关系运算符、逻辑运算符等。常用运算符如表4-17所示。3.文本定位在XPath中,文本定位是指根据节点中包含文本的值进行的定位,可以通过“nodeName[条件表达式]”方式指定条件,该条件由元素、运算符和元素包含文本组成。在进行定位时,根据条件表达式,判断nodeName节点下是否包含表达式中的元素,如果包含,则继续判断该元素中包含的文本是否符合;如果都符合,则返回包含nodeName节点信息的Element对象。三、数据提取根据HTML中文本的不同属性,可以将XPath定位后的数据提取分为属性值提取和文本内容提取

温馨提示

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

评论

0/150

提交评论