python爬虫之xpath的基本使用(案例)

这篇博客介绍了XPath的用途,它用于在XML文档中遍历元素和属性。文章展示了如何通过Python的lxml库安装和使用XPath,包括选择器的使用如‘/’、‘//’、‘.’、‘..’以及属性选择、谓语等。还给出了XPath在处理HTML文档中的实例,演示了如何提取链接、类名等信息,并展示了匹配、路径和组合选择器的用法。
摘要由CSDN通过智能技术生成

一、简介

XPath 是一门在 XML 文档中查找信息的语言。

XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

二、安装

pip install lxml

三、使用

from lxml import etree
#定义字符串变量
wb_data = """
        <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="link5.html">fifth item</a>
             </ul>
         </div>
        """
#将字符串转换为html的对像,制动补全<html><body>... ...</body></html>
html=etree.HTML(wb_data)
# / 代表级点
data1=html.xpath('/html')
print("data1"+str(data1))

# //   代表后面的节点可以任意位置
data2=html.xpath('//a')
for i in data2:
    if hasattr(i,'text'):
        print(i.text)
    else:
        print(i)

#具体的路经
data3=html.xpath('html/body/div/ul/li')
for i in data3:
    print(i)

# . 代表当前节点,..代表父节点
data4=html.xpath('/html/body/div/ul')
for i in data4:
   li=i.xpath('./li')
   for j in li:
       a=j.xpath('./a')
       for k in a:
           print(k.text)
for i in data4:
    ul=i.xpath('../ul')
    print(ul)

# @ 选取属性
data5=html.xpath('//li/@class')
print(data5)
data6=html.xpath('//a/@href')
print(data6)

#谓语,指定具体的节点
data7=html.xpath('//li[i]/a')
print(data7)
data8=html.xpath('//li[last()]')
print(data8)

data9=html.xpath('//a[@href="link3.html"]')
for i in data9:
    if hasattr(i,'text'):
        print(i.text)

# * 未知节点
data10=html.xpath('//*')
print(len(data10))
for i in data10:
    if hasattr(i,'text'):
        print(i.text)
data11=html.xpath('//@*')
print(len(data11))
print(data11)

# | 匹配两个
data12=html.xpath('//li | //a')
print(len(data12))

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值