ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python XPath 库的技巧和案例

2023-03-21 19:58:23  阅读:333  来源: eilia_Pei

标签:


以下是使用 Python XPath 库的技巧和案例[3]:

安装 lxml 库 XPath 需要用到 lxml 库,可以使用 pip 安装。
pip install lxml
创建 etree 对象 etree 对象表示整个 XML 文档,通过解析这个对象来定位元素。
from lxml import etree

html = '''
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <div class="container">
            <ul class="list">
                <li class="item"><a href="1.html">第1页</a></li>
                <li class="item"><a href="2.html">第2页</a></li>
                <li class="item"><a href="3.html">第3页</a></li>
                <li class="item"><a href="4.html">第4页</a></li>
                <li class="item"><a href="5.html">第5页</a></li>
            </ul>
        </div>
    </body>
</html>
'''

# 创建 etree 对象
tree = etree.HTML(html)
使用 xpath 获取元素 xpath 使用路径表达式来选择 XML 文档中的元素。在 lxml 中,可以使用 xpath() 方法来查询元素。
# 选择所有 li 标签
lis = tree.xpath('//li')
print(lis)

# 选择所有 class 为 item 的 li 标签
lis = tree.xpath('//li[@class="item"]')
print(lis)

# 获取文本内容
for li in tree.xpath('//li/a'):
    print(li.text)

# 获取标签属性值
link = tree.xpath('//a')[0]
print(link.get('href'))
使用 contains() 方法 contains() 方法可以在属性值中搜索字符串。
# 模糊匹配
lis = tree.xpath('//li[contains(@class, "item")]')
print(lis)

# 搜索 href 属性包含 "1" 的 a 标签
link = tree.xpath('//a[contains(@href, "1")]')
print(link)
使用 text() 方法 text() 可以获取元素直接包含的文本内容。
# 获取第一个 li 标签下的文本内容
text = tree.xpath('//li/text()')[0]
print(text)
使用 parent:: 和 ancestor:: 方法 parent:: 和 ancestor:: 方法可以选择元素的父级和祖先节点。
# 获取每个 li 标签所在的 ul 标签
uls = tree.xpath('//li/parent::*')
print(uls)

# 获取每个 li 标签所在的 div 标签
divs = tree.xpath('//li/ancestor::*[1]')
print(divs)
以上是使用 XPath 库的一些技巧和案例,希望对您有所帮助。

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有