10.lxml简单的使用

为了能够在XML (关于XML技术,可参照htp://ww.w3school.comn.cn/xmnl/进行完整学习)文档树中准确地找到某个节点,引入了XPath的概念。

1.XPath,是基于文档的层次结构来确定查找路径的

2.区分正则表达式和XPath:
(1)用正则表达式进行查找,则它会告诉你这个建筑本身有哪些特征,以及它的左边是什么,右边是什么。这样的描述限定查找的范围较大

(2)而XPath会直接告诉你这个建筑位于“中国-北京-昌平区-建材城西路-金燕龙办公楼- -层",相比较而言,这种描述更加具体,易于找到。

lxml库概述(就目前所学这个用到的多)

作用:解析和提取HTML或者XML格式的数据

优点:可以利用XPath语法快速地定位特定的元素或节点

1.从字符串或文件中解析XML

为了能够将XML文件解析为树结构,etree 模块中提供了如下3个函数:

( 1) fromstring() 函数:从字符串中解析XML文档或片段,返回根节点(或解析器目标返回的结果)。#通常用于将XML字面量直接写入到源代码中

(2) XM() 函数:从字符串常量中解析XML文档或片段,返回根节点(或解析器目标返回的结果)。#XML方法,与fromstring方法基本一样

(3) HTML() 函数:从字符串常量中解析HTML文档或片段,返回根节点(或解析器目标返回的结果)。#HTML()方法,如果没有和标签,会自动补上

附加:

(4)parse()函数:从XML文件中直接解析
#在调用函数时,如果没有提供解析器,则使用默认的解析器,函数会返回一个ElementTree类的对象html=etree.parse(’. /hello.html’)
#默认解析器经常解析错误,这时候就要自己创建HTML解析器myparser
myparser = etree.HTMLParser(encoding=‘utf-8’)
html=etree.parse(‘hello.html’,parser=myparser)
#以上代码中html是返回的ElementTree类对象。以后就可以调用html的一些方法进行操作

语法格式(详见xpath概述)

lxml库中大部分功能都位于lxml.etree 模块中,导入lxml.etree模块的常见方式

from lxml import etree

变量名=etree.方法名(参数)

变量名1=变量名.xpath(‘xpath路径’)

如果想要获得文本可以在路径表达式后加/text()
例:

from lxml import etree
root = etree.HTML(html) #这只是片段,html是获取到的网页源代码
user = root.xpath('//a[@class="resume_newlist_username"]/text()')#按照属性查找

可以与xpath游览器插件结合,方便找到需要爬取的部分
https://blog.csdn.net/lu1171901273/article/details/90443832

2.ElementPath 类简介

ElementTree类中附带了一一个类似于XPath路径语言的ElementPath类。在ElementTree类或Elements类的API文档中,提供了3个常用的方法,可以满足大部分搜索和查询需求,并且这3个方法的参数都是XPath语句。

(1) find()方法:返回匹配到的第一个子元素。

(2) findall()方法:以列表的形式返回所有匹配的子元素。

(3) iterfind() 方法:返回一个所有匹配元素的迭代器。



lxml库的- -些相关类如下:
(1) Element类:可以理解为XML的节点。
(2) ElementTree类:可以理解为一个完整的XML文档树。
( 3) ElementPath类:可以理解为XPath,用于搜索和定位节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值