数据解析之 XPath & lxml 库

简介: 数据解析之 XPath & lxml 库

XPath

定义

即XML路径语言(XML Path Language),是一种用来确定XML文档中某部分位置的语言,它基于XML的树状结构,提供在数据结构树中寻找节点的能力,也适用于HTML文档中;


开发工具

Chrome

在Chrome的应用商店搜索XPath Helper,然后安装这个插件即可;


image.pngFirefox

同样的方式,在应用中心查找XPath Checker,然后安装这个插件即可,由于未使用Firefox,便不再演示;


语法

节点选取

表达式 描述 示例

nodename 选词当前节点下节点的所有子节点 div

/ 若在最前,则表示从根节点开始选取,否则选择某节点下的某个节点 /div

// 从全局节点中选取某一节点所在所有位置 //div

@ 选取某一节点属性 //div[@color]

. 选取当前节点 ./div

… 选取当前节点的父节点 …/div

谓语

路径表达式 描述

/markstore/mark[1] 选取markstore下第一个元素

/markstore/mark[last()] 选取markstore下倒数第二个mark元素

markstore/mark[position()<5] 选取markstore下前四个子元素

//mark[@id] 选取拥有id的mark元素

//mark[@id=‘k’] 选取id属性为k的mark元素

通配符

通配符 描述

* 匹配任意节点

@* 匹配节点中的任意属性

node() 匹配任何类型的节点

注意事项

使用方式://获取当前页面所有元素,然后写标签名,最后写谓词进行提取;

/和//的区别:/代表只获取直接子节点,//代表获取子孙节点;

lxml库

安装

使用如下命令安装即可,


pip install lxml


使用


from lxml import etree
text = '''
<div>
    <ul>
        <li class="id-1"><a href="www.baidu.com">baidu</a></li>
        <li class="id-2"><a href="www.google.com">Google</a></li>
        <li class="id-3 id-4" name='item'><a href="www.taobao.com">Taobao</li>
    </ul>
</div>
'''
# 解析字符串为html文档
html = etree.HTML(text)
# 字符串序列化为html文档,会自动修正HTML文本
result = etree.tostring(html, encoding='utf-8')
print(result.decode('utf-8'))
# 从文件读取
parser = etree.HTMLParser(encoding='utf-8')
html = etree.parse('csdn.html', parser=parser)
# 获取所有a标签的href属性
aList = html.xpath('//a/@href')
for a in aList:
    print(a)
# 属性多值匹配
html = etree.HTML(text)
result = html.xpath('//li[contains(@class, "id-4")/href/text()]')
print(result)
# 多属性匹配
html = etree.HTML(text)
result = html.xpath('//li[contains(@class, "id-4") and @name="item"]/href/text()')
print(result)
# 按序选择
text = """
<div> 
<ul> 
<li class="item-0"><a href="link1.html">first item</a></li> 
<li class="item-1"><a href="link2.html">second item</a></li> 
<li class="item-inactive"><a href="link3.html">third item</a></li> 
<li class="item-1"><a href="link4.html">fourth item</a></li> 
<li class="item-0"><a href="links.html">fifth item</a></li> 
</ul> 
</div>
"""
html = etree.HTML(text)
# 注意,xpath匹配中序号是以1开头的,而不是以0开头的
result = html.xpath('//li[1]/a/text()')
print(result)
result = html.xpath('//li[last()]/a//text()')
print(result)
result = html.xpath('//li[last()-2]/a/text()')
print(result)
result = html.xpath('//li[position()<3]/a/text()')
print(result)

总结

本文主要介绍了爬虫中数据解析时所需要的用的XPath和lxml库,介绍了它们的安装方式和简单的使用方式,如果你有更好的建议和想法,欢迎留言指正。

目录
相关文章
|
6月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
628 29
|
6月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
425 4
JSON数据解析实战:从嵌套结构到结构化表格
|
6月前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
6月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
7月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
176 4
|
7月前
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。
|
7月前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
6月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
6月前
|
存储 缓存 监控
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
|
6月前
|
JSON API 数据格式
淘宝商品评论API接口系列的应用与数据解析
在电商平台中,用户评论是了解商品质量、服务水平和用户满意度的重要数据来源。淘宝作为中国最大的电商平台,提供了商品评论API接口,帮助开发者获取和分析用户评价数据。本文将介绍淘宝商品评论API接口系列的作用、使用方法,并通过示例展示如何调用API并解析返回的JSON数据。

推荐镜像

更多
  • DNS