![《数据采集技术》课件-lxml 解析库_第1页](http://file4.renrendoc.com/view9/M02/2B/22/wKhkGWdrfpOAZ2x1AAD2UI4_U2o509.jpg)
![《数据采集技术》课件-lxml 解析库_第2页](http://file4.renrendoc.com/view9/M02/2B/22/wKhkGWdrfpOAZ2x1AAD2UI4_U2o5092.jpg)
![《数据采集技术》课件-lxml 解析库_第3页](http://file4.renrendoc.com/view9/M02/2B/22/wKhkGWdrfpOAZ2x1AAD2UI4_U2o5093.jpg)
![《数据采集技术》课件-lxml 解析库_第4页](http://file4.renrendoc.com/view9/M02/2B/22/wKhkGWdrfpOAZ2x1AAD2UI4_U2o5094.jpg)
![《数据采集技术》课件-lxml 解析库_第5页](http://file4.renrendoc.com/view9/M02/2B/22/wKhkGWdrfpOAZ2x1AAD2UI4_U2o5095.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版历史七年级下册第10课 《蒙古族的兴起与元朝的建立》 听课评课记录7
- 北师大版历史八年级上册第10课《新文化运动》听课评课记录
- 猪场购销合同(2篇)
- 生产承包合同(2篇)
- 仁爱版八年级地理上册3.2《土地资源》听课评课记录
- 八年级道德与法治下册第四单元崇尚法治精神第七课尊重自由平等第1框自由平等的真谛听课评课记录(新人教版)
- 苏科版数学七年级下册10.2.1《二元一次方程组》听评课记录
- 冀教版数学七年级下册《多项式乘多项式》听评课记录2
- 湘教版数学七年级上册2.3《代数式的值》听评课记录
- 五年级数学下册听评课记录《3.1 分数乘法(一)(4)》北师大版
- 固体废弃物检查记录
- 工程设计费取费标准
- GB/T 5465.1-2009电气设备用图形符号第1部分:概述与分类
- 2023年辽宁铁道职业技术学院高职单招(数学)试题库含答案解析
- CAPP教学讲解课件
- 自然环境的服务功能课件 高中地理人教版(2019)选择性必修3
- 小耳畸形课件
- 新人教版初中初三中考数学总复习课件
- 机械制造有限公司组织架构图模板
- 8.3 摩擦力 同步练习-2021-2022学年人教版物理八年级下册(Word版含答案)
- 生理学教学大纲
评论
0/150
提交评论