网络爬虫,xpath解析

本文介绍了如何利用Python的lxml库通过XPath语法解析HTML代码,包括选取根节点、任意标签起点、当前节点、父节点、属性选择、特定节点选择以及匹配多个标签等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#导入xlml包下的etree类
from lxml import etree

#随意定义一段html代码块
wb_data="""
    <div>
        <ul>
            <li><a href="//a.4399.cn/game-id-195566.html">aaa</a></li>
            <li><a href="//a.4399.cn/game-id-150471.html">bbb</a></li>
            <li><a href="//a.4399.cn/game-id-122141.html">ccc</a></li>
            <li><a href="//a.4399.cn/game-id-144729.html">ddd</a></li>
        </ul>
    <div>
"""

#将字符串转换为html的对象(编号),
#自动补全<html><body>...</body></html>标签
html=etree.HTML(wb_data)

#用 / 代表根节点(最上级)
# data1默认为列表类型
data1=html.xpath("/html")
print(data1)

print("-"*80)

#用 // 代表任意标签起点
data2=html.xpath("//a")
for i in data2:
    print(i.text)   # 输出a标签的内容

print("-"*80)

#. 代表当前节点
data3=html.xpath("/html/body/div/ul")
for i in data3:     #这里获取的ul标签类容
    a = i.xpath("./li/a")   #.代表当前标签(ul)然后再接后面的标签最后获取的是a标签
    for j in a:
        print(j.text)   #循环输出a标签里的内容

print("-"*80)

#.. 代表父级节点(父标签)
data4=html.xpath("/html/body/div/ul")
for i in data4:     #这里获取的ul标签类容
    div=i.xpath("..") #ul的父标签=div
    print(div)

print("-"*80)

# @ 选取属性(也就是标签里的属性)
data5=html.xpath("//a/@href")   #这里获取的是a标签里的href内容
for i in data5:
    print(i)

print("-"*80)

#指定具体的节点(获取指定相同标签的其中一个,[]下标从1开始)
data6=html.xpath("//li[1]")
print(data6)

print("-"*80)

#选取a标签内有href的并且路径为//a.4399.cn/game-id-122141.html
data7=html.xpath('//a[@href="//a.4399.cn/game-id-122141.html"]')
print(data7)
print(data7[0].text)     # 输出a标签的内容

print("-"*80)

#未知节点/标签(*代表未知)
data8=html.xpath("//*")
print(len(data8))   #这段html代码块共有多少个标签
for i in data8:
    if hasattr(i,"text"):  
        print(i.text)   #输出每个标签里的内容

print("-"*80)

#未知属性
data9=html.xpath("//@*")
print(len(data9))   #这段html代码块共有多少个属性
for i in data9:
    print(i)    #输出属性内的值

print("-"*80)

# | 匹配两个(| 是或)
data10=html.xpath("//li | //a")
print(len(data10))  #获取了li和a标签共有多少个



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值