一文掌握Python爬虫XPath语法
本文转自微信公众号:"算法与编程之美"
一、问题描述
1.什么是XPath?
xpath
是一门在XML
和HTML
文档中查找信息的语言,可用来在XML
和HTML
文档中对元素和属性进行遍历,XPath 通过使用路径表达式来选取 XML
文档中的节点或者节点集。这些路径表达式和在常规的电脑文件系统中看到的表达式非常相似。
二、解决方案
1.XPath语法
想要学好xpath
,首先要搞明白html
文档中的节点。
<div> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a> # 注意,此处缺少一个 </li> 闭合标签 </ul> </div>
以上是在网上随便找的一段html的文本,可以观察得到,div的标签下是ul标签,而ul标签下是li标签,于是发现html的标签是一级一级如树状的。Xpath正是通过这样的方式去寻找。以生活中举例,要确定一个人的位置,首先确定他在中国,然后确定他在某个省份,哪座城市,那个小区,最后找到他。
表达式 |
描述 |
Nodename |
选取此节点的所有子节点 bookstore 选取bookstore下所有的子节点 |
/ |
如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点 /bookstore 选取根元素下所有的bookstore节点 |
// |
从全局节点中选择节点,随便在哪个位置 //book 从全局节点中找到所有的book节点 |
@ |
选取某个节点的属性 //book[@price] 选择所有拥有price属性的book节点 |
. |
当前节点 |
Text() |
获取标签中的文本 |
同级标签可以用li[1]
,li[2]
,li[3]
的方式获取
2.lxml库
简单介绍一下lxml
库,接下来会用到它
lxml
是一个HTML
/XML
的解析器,主要的功能是如何解析和提取HTML
/XML
数据。
lxml
和正则一样,也是用C实现的,是一款高性能的PythonHTML
/XML
解析器,可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。
3.实际案例
随便爬取一个网站,找到找到网站的html
文本
如下图:
要找到title
和href
,仔细观察可以得到路径分别是//div[@id="resultList"]/div[@class="el"]/p/span/a/@title
//div[@id="resultList"]/div[@class="el"]/p/span/a/@href
运行如下:
三、结语
Xpath
,是在爬虫中常见的提取数据的方式之一,相比于正则,它更加简单一些,便于操作,xpath
的难点在于准确的确定数据所在的位置。
到此这篇关于一文掌握Python爬虫XPath语法的文章就介绍到这了,更多相关Python爬虫XPath语法内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
python爬虫用request库处理cookie的实例讲解
在本篇内容里小编给大家整理的是一篇关于python爬虫用request库处理cookie的实例讲解内容,有需要的朋友们可以学习参考下。...2021-02-21- XPath构建于XML之上,以表示路径的方式来确定XML中元素位置,事实上并不是太常用,这里我们来简单了解JavaScript操作XPath的一些基本方法...2016-06-12
基于xpath选择器、PyQuery、正则表达式的格式清理工具详解
这篇文章主要介绍了基于xpath选择器、PyQuery、正则表达式的格式清理工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码
使用HtmlAgilityPack XPath表达式来抓取博客园数据使用WebClient 下载数据,HtmlAgilityPack XPath表达式解析数据,并绑定到Repeater控件...2021-09-22- 在本篇文章里小编给大家整理的是一篇关于python爬虫智能翻页批量下载文件的实例详解内容,有兴趣的朋友们可以学习下。...2021-02-04
- 很多人都会是用PS进行拼接,本文主要介绍了pytho多张图片的无损拼接的实现示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-27
- 在本篇文章里小编给大家整理的是一篇关于Python爬虫UA伪装爬取的实例讲解内容,有需要的朋友们可以学习参考下。...2021-02-20
- 这篇文章主要介绍了用Python简陋模拟n阶魔方,文中有非常详细的代码示例,对正在学习python的小伙伴呢有一定的帮助,需要的朋友可以参考下...2021-04-17
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
这篇文章主要介绍了pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25- 在本篇文章里小编给大家整理的是一篇关于python爬取2021猫眼票房字体加密实例内容,有兴趣的朋友们可以学习下。...2021-02-20
- selenium的几种定位方法中,大杀器之一就是xpath方法,学会它,你将无所不能.本文就带大家详细了解一下这个大杀器,文中有非常详细的介绍,需要的朋友可以参考下...2021-05-20
- 这篇文章主要介绍了C#通过xpath查找xml指定元素的方法,涉及C#操作XML文件的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 在本篇文章里小编给大家整理了一篇关于python爬虫实现爬取同一个网站的多页数据的实例内容,有兴趣的朋友们可以学习参考下。...2021-01-18
python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法
这篇文章主要介绍了python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-06- 这篇文章主要介绍了c#通过xpath读取xml示例,需要的朋友可以参考下...2020-06-25
- 在本篇文章里小编给大家整理的是一篇关于python爬取微博评论的实例讲解,有兴趣的朋友们可以学习下。...2021-01-16
- 在本篇内容中小编给大家整理的是关于python爬虫用mongodb的理由,需要的朋友们可以跟着学习参考下。...2020-07-28
- 本篇文章是对在C#中使用XPath的示例进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 这篇文章主要介绍了python使用XPath解析数据爬取起点小说网数据,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-04-22