XPath的难点在哪?在于准确的确定数据所在的位置

2022-10-1821:25:48编程语言入门到精通Comments1,021 views字数 728阅读模式

1.什么是XPath?

xpath是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历,XPath 通过使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和在常规的电脑文件系统中看到的表达式非常相似。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

2.XPath语法

想要学好xpath,首先要搞明白html文档中的节点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

XPath的难点在哪?在于准确的确定数据所在的位置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

以上是在网上随便找的一段html的文本,可以观察得到,div的标签下是ul标签,而ul标签下是li标签,于是发现html的标签是一级一级如树状的。Xpath正是通过这样的方式去寻找。以生活中举例,要确定一个人的位置,首先确定他在中国,然后确定他在某个省份,哪座城市,那个小区,最后找到他。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

XPath的难点在哪?在于准确的确定数据所在的位置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

同级标签可以用li[1],li[2],li[3]的方式获取文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

3.lxml库

简单介绍一下lxml库,接下来会用到它文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML 数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

lxml和正则一样,也是用C实现的,是一款高性能的PythonHTML/XML解析器,可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

4.实际案例

随便爬取一个网站,找到找到网站的html文本,如下图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

XPath的难点在哪?在于准确的确定数据所在的位置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

要找到title和href,仔细观察可以得到路径分别是//div[@id="resultList"]/div[@class="el"]/p/span/a/@title文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

//div[@id="resultList"]/div[@class="el"]/p/span/a/@href文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

运行如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

XPath的难点在哪?在于准确的确定数据所在的位置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

5.总结

Xpath,是在爬虫中常见的提取数据的方式之一,相比于正则,它更加简单一些,便于操作,xpath的难点在于准确的确定数据所在的位置。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28426.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/28426.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定