《数据采集技术》课件-lxml 解析库_第1页
《数据采集技术》课件-lxml 解析库_第2页
《数据采集技术》课件-lxml 解析库_第3页
《数据采集技术》课件-lxml 解析库_第4页
《数据采集技术》课件-lxml 解析库_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

lxml解析库Contents知识目标掌握lxml使用方法技能目标提高数据采集和处理能力素养目标培养良好的信息素养和道德意识lxml库lxml库是Python的XML和HTML解析器主要用于解析和提取HTML或者XML格式的数据,可以利用XPath语法快速地定位特定的元素或节点。lxml库lxml库是Python的XML和HTML解析器主要用于解析和提取HTML或者XML格式的数据。XPath语法特定元素或节点快速定位lxml库lxml库中大部分的功能都位于:lxml.etree模块导入lxml.etree模块的常见方式如下:fromlxmlimportetreelxml库lxml库的一些相关类如下:类说明Element可以理解为XML的节点。ElementTree可以理解为一个完整的XML文档树。ElementPath可以理解为XPath,用于搜索和定位节点。lxml库可以理解为XML的节点。Element类是XML处理的核心类示例:fromlxmlimportetreeroot=etree.Element('root')print(root)运行结果:<Elementrootat0x17d1539e080>参数root表示节点的名称lxml库Element类的相关操作,主要分为三个部分。通过tag属性获取节点的名称,示例如下:节点操作节点属性的操作节点内文本的操作示例:fromlxmlimportetreeroot=etree.Element('root')print(root)print(root.tag)运行结果:<Elementrootat0x17d1539e080>rootset(key,value)方法,是已有的节点添加属性。调用该方法时可以传入两个参数:第一个参数表示属性的名称第二个参数表示属性的值示例:fromlxmlimportetreeroot=etree.Element('root')root.set('age','30')print(etree.tostring(root))运行结果:b'<rootage="30"/>'用到了tostring()函数,该函数可以将元素序列化为其XML树的编码字符串表示形式。lxml库通过text、tail属性或者xpath()方法来访问文本内容。#给root节点添加文本示例:fromlxmlimportetreeroot=etree.Element('root')root.text='Hello,World!'print(root.text)print(etree.tostring(root))运行结果:Hello,World!b'<root>Hello,World!</root>'lxml库etree模块中提供了如下三个函数lxml库fromstring()函数XML()函数HTML()函数将XML文件解析为树结构:从字符串中解析XML文档或片段,返回根节点(或解析器目标返回的结果)。从字符串常量中解析XML文档或片段,返回根节点(或解析器目标返回的结果)。从字符串常量中解析HTML文档或片段,返回根节点(或解析器目标返回的结果)。etree模块中提供了如下三个函数lxml库将XML文件解析为树结构:从字符串中解析XML文档或片段。返回根节点(或解析器目标返回的结果)。fromstring()函数从字符串常量中解析XML文档或片段。返回根节点(或解析器目标返回的结果)。XML()函数从字符串常量中解析HTML文档或片段。返回根节点(或解析器目标返回的结果)。HTML()函数lxml库etree模块示例:fromlxmlimportetreeroot=etree.Element('root')xml_data='<root>data</root>'root_one=etree.fromstring(xml_data)print(root_one)print(etree.tostring(root_one))运行结果:<Elementrootat0x1940dd2b600>b'<root>data</root>'调用parse()函数从XML文件中直接解析。直接解析在调用parse()函数时,如果没有提供解析器,那么就使用默认的解析器,函数会返回一个ElementTree类型的对象。示例:fromlxmlimportetreehtml=etree.parse('./hello.html')result=etree.tostring(html,pretty_print=True)print(result)html文件如下:调用parse()函数从XML文件中直接解析。直接解析如果没有提供解析器,就使用默认的解析器,函数会返回一个ElementTree类型的对象。运行结果:<!--hello.html--><div><ul><liclass="item-0"><ahref="link1.html">firstitem</a></li><liclass="item-1"><ahref="link2.html">seconditem</a></li><liclass="item-inactive"><ahref="link3.html"><spanclass="bold">thirditem</span></a></li><liclass="item-1"><ahref="link4.html">fourthitem</a></li><liclass="item-0"><ahref="link5.html">fifthitem</a></li></ul></div>在ElementTree类或Elements类中,提供了三个常用的方法,可以满足大部分搜索和查询需求。lxml库返回匹配到的第一个子元素find()方法以列表的形式返回所有匹配的子元素findall()方法返回一个所有匹配元素的迭代器iterfind()方法三种方法的参数都是XPath语句。lxml库示例:fromlxmlimportetreeroot=etree.XML("<root><ax='123'>aText<b/><c/><b/></a></root>")print(root.find("a").tag)print(root.findall(".//a[@x]")[0].tag)运行结果:aTexta以HTML示例文件做为素材来介绍lxml库的基本使用,该文件名为hello.html,内容如下:lxml库的基本使用示例:<!--hello.html--><div><ul><liclass="item-0"><ahref="link1.html">firstitem</a></li><liclass="item-1"><ahref="link2.html">seconditem</a></li><liclass="item-inactive"><ahref="link3.html"><spanclass="bold">thirditem</span></a></li><liclass="item-1"><ahref="link4.html">fourthitem</a></li><liclass="item-0"><ahref="link5.html">fifthitem</a></li></ul></div>lxml库的基本使用//li//li/@class//li[last()-1]/a可以直接使用“//”从任意位置选取节点li,路径表达式如下:1在上个表达式的末尾,使用“/”向下选取节点,并使用“@”选取class属性节点,表达式如下:2从任意位置开始选取倒数第二个<li>标签,再向下选取标签<a>。如果要获取该标签中的文本,可以使用如下表达式:3//li[last()-1]/a]/text()或lxml库的基本使用示例:fromlxmlimportetreehtml=etree.parse('hello.html')result=html.xpath('//li')print(result)print(len(result))print(type(result))print(type(result[0]))运行结果:[<Elementliat0x17d15529240>,<Elementliat0x17d15529280>,<Elementliat0x17d15529340>,<Elementliat0x17d15529380>,<Elementliat0x17d155293c0>]5<class'list'><class'lxml.etree._Element'>lxml库的基本使用示例:fromlxmlimportetreehtml=etree.parse('hello.html')result=html.xpath('//li[last()-1]/a')print(result)print(etree.tostring(result[0]))print(result[0].text)运行结果:[<Elementaat0x17d15529c00>]b'<ahref="link4.html">fourthitem</a>'fourthitem解析某网站首页热搜榜示例:importurllib.requestfromlxmlimportetreeuser_agent="Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0"headers={"User-Agent":user_agent}url='/'request=urllib.request.Request(url,headers=headers)response=urllib.request.urlopen(request)html=response.read().decode("utf-8")root=etree.HTML(html)title=root.xpath('//span[@class="title-content-title"]/text()')print(title)运行结果:['金秋之约','中国新

温馨提示

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

评论

0/150

提交评论