xpath 学习笔记

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//input[@id="kw"]

在这里插入图片描述
//input[@class=“btn self-btn bg s_btn”]

在这里插入图片描述

//a[@class="toindex"]

在这里插入图片描述

//div[@id="head"]/div[5]/div[2]/a[1]或
//div[@id="head"]/div[5]/div[2]/a[@class="toindex"]或
//div[@id="head"]//a[@class="toindex"]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

下面举例说明lxml的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>#单标签型,最后要加斜线
    <title>xpath测试</title>
</head>
<body>
    <div class="song">
        火药
        <b>指南针</b>
        <b>印刷术</b>
        造纸术
    </div>
    <div class="tang">
        <ul>
            <li class="balove">停车坐爱枫林晚,霜叶红于二月花</li>
            <li id="hua">商女不知亡国恨,隔江犹唱后庭花</li>
            <li class="love" name="yang">一骑红尘妃子笑,无人知是荔枝来</li>
            <li id="bei">葡萄美酒夜光杯,欲饮琵琶马上催</li>
            <li><a href="www.baidu.com/">百度一下</a></li>
        </ul>
        <ol>
            <li class="lucy">寻寻觅觅,冷冷清清,凄凄惨惨戚戚</li>
            <li class="balili">乍暖还寒时候,最难将息</li>
            <li class="lilei">三杯两盏淡酒</li>
            <li>怎敌他晚来风急</li>
            <li>雁过也,正伤心,却是旧时相识</li>
            <li>爱就一个字,我只说一次</li>
            <li>爱情36计,我要立刻美丽</li>
        </ol>
    </div>
</body>
</html>
#author:Adminstrator
#date: 2019/8/25
from lxml import etree
tree = etree.parse('xpath.html')#返回的是一个对象
#生成对象
ret = tree.xpath('//div[@class="tang"]/ul/li[1]')#返回的是一个内存地址,用列表封存的
print(ret[0].text)
ret1 = tree.xpath('//div[@class="tang"]/ul/li[1]/text()')#这种形式返回的是一个列表
print(ret1)

#如何取  www.baidu.com
ret2=tree.xpath('//div[@class="tang"]/ul/li[last()]/a/@href')
print(ret2)
#一骑红尘妃子笑,无人知是荔枝来
ret3 = tree.xpath('//div[@class="tang"]/ul/li[@class="love" and @name="yang"]')
print(ret3[0].text)
#模糊匹配 contains,找classz中带有 l 的所有li标签
ret4 = tree.xpath('//li[contains(@class,"l")]')
print('..................................')
print(ret4)
print('......................................')
#模糊匹配,找文本中含有“爱”的li
ret5 = tree.xpath('//li[contains(text(),"爱")]/text()')
print(ret5)
#模糊匹配,以ba开头的所有li标签
ret6 = tree.xpath('//li[starts-with(@class,"ba")]/text()')
print('.............................................')
print(ret6)
#/和//的区别
ret7 = tree.xpath('//div[@class="song"]/text()')# / 内部标签里的内容得不到,只获取节点内容
print(ret7)
ret8 = tree.xpath('//div[@class="song"]//text()')# //  内部标签里的内容也可以得到,获取节点里面不带标签的所有内容
print(ret8)

#直接将所有的内容拼接起来,返回给你
ret9=tree.xpath('//div[@class="song"]')
string=ret9[0].xpath('string(.)')
print(string.replace('\t', '').replace('\n', ''))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值