爬虫之xpath

1.什么是xml

(1)定义:xml称为可扩展标记性语言。
(2)特点:xml具有自描述特性。是一种半结构化数据。
(3)作用:xml的设计宗旨是用来传输数据。

2.xml和html的区别

1)语法要求不同:

xml的语法要求更严格。
1、在html中不区分大小写,在xml中严格区分
2、在html中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>标记。在xml中,是严格的树状结构,绝对不能省略任何标记。
3、在xml中,拥有单个标记二没有匹配的结束标记的元素必须用一个/字符作为结尾。

<a href=’www’/>

4、在xml中,属性值必须分装在引号中。在html中,引号可用可不用。
5、在html中属性名可以不带属性值,xml必须带
6、xml文档中,空白部分不会被解析器自动删除,但是html是过滤掉空格

(2)作用不同:

xml主要用来传输数据。html主要用来显示数据,以及更好的显示数据。

(3)标记不同:

xml没有固定的标记。html标签是固定的。

3.xpath

(1)什么是xpath?

xpath是一种语法,用来提取xml或者html页面内容的语法。

(2)xpath语法内容

元素:指一个xml的标签以及标签的所有内容
属性:class,name
内容:a标签的内容就是aaa,b标签的内容就是bbb
标签:和元素一样。

<a>
	aaa
	<b>bbb</b>
</a>

1.选取节点

nodename选取此标签的所有子标签
/从根节点开始选取
//从任意位置开始选取
.选取当前节点
选取父节点
@选取属性
text()选取内容

2.谓语
英语中谓语用来限定。
xpath的谓语也是限定选取的内容的。

/bookstore/book[1]取bookstroe下面的第一个book标签
/bookstore/book[last()]取bookstroe下面的最后一个book标签
/bookstore/book[last()-1]取bookstroe下面倒数第二个book标签
/bookstore/book[position()>1]从bookstroe下面的第二本书开始取
//title[@lang]取一个有lang属性的title标签
//title[@lang=“eng”]取一个有lang属性,并且lang属性为eng的title标签

3.选取未知节点

* ---匹配任意节点
@* --匹配任意属性

4.选取若干路径
//title|//price
选取所有的title标签和price标签。

4.在python中如何使用xpath

通过lxml模块,可以使用xpath语法来筛选元素

导包

from lxml import etree

(1)将字符串形式的xml内容解析成可以调用xpath语法的element对象的方法。

html_element=etree.HTML(html_str)
res=html_element.xpath()

res也是一个element,表示还可以继续调用xpath方法来继续筛选元素。
etree.HTML()可以帮我们补齐标签内容
(2)将一个html文件转化成element对象的方法

from lxml import etree
html=etree.parse('demo.html')
print(etree.tostring(html,pretty_print=True,encoding='utf-8').decode("utf-8"))

当使用parse方法解析一个xml或者html文件时,语法必须严格按照xml的标签语法。标签必须对应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值