#Python&&xpath解析及案例演示

解析 = > xpath(含义)

在这里插入图片描述

安装在这里插入图片描述

相应的库

案例 =>加深理解印象

from lxml import etree

# 如果pychar报错,可以考虑这种导入方式
# from lxml import html
# etree = html.etree

# import xml.etree.ElementTree as ET

xml = """
<book>
    <id>1<id>
    <name>野花遍地香</name>
    <price>1.23</price>
    <nick>臭豆腐</nick>
    <author>
       <nick id="10086">周大强</nick>
       <nick id="10010">周芷若</nick>
       <nick class="jay">周某某</nick>
       <nick class="jolin">蔡某茜</nick>
       <div>
          <nick>惹了</nick>
       <div>
    </author>
    <partner> 
       <nick id="ppc">太瘦</nick>
       <nick id="ppbc">不太瘦</nick>
    </partner>
</book>
"""
# 此时练习只能用XML
# et = etree.XML(xml)
# result = et.xpath("/book") # / 表示着根节点
# print(result) # 拿到结果 [<Element book at 0x109da5500>]
# result = et.xpath("/book/name") # 在xpath中间的/表示的是儿子
# result = et.xpath("/book/name/text()")[0] # text() 拿文本
# result = et.xpath("/book//nick")   # 表示的是子孙后代(所有)。

# result = et.xpath("/book/*/nick/text()") # * 通配符。 谁都行,但是要在通配符紧随后面的才行

# result = et.xpath("/book/author/nick[@class='jay']/text()") # []表示属性筛选。@ 属性名=值 find(Nick,attrs={"class":"jay"})

# result = et.xpath("/book/author/nick/@id") # 最后一个/表示拿到nick里面的id的内容,@属性,可以直接拿到属性值
#
# print(result)

# xpath 处理HTML

html = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"  />
    <title>Title</title>
</head>
<body>
     <ul>
        <li><a href="http://www.baidu.com">百度</a></li>
        <li><a href="http://www.google.com">谷歌</a></li>
        <li><a href="http://www.sogou.com">搜狗</a></li>
     </ul>
     <ol>   
        <li><a href="feiji">飞机</a></li>
        <li><a href="dopan">大炮</a></li>
        <li><a href="houche">火车</a></li>
     </ol>
     <div class="job">李某柑</div>
     <div class="common">胡辣汤</div>

</body>
</html>
"""
et = etree.HTML(html)
# li_list = et.xpath("/html/body/ul/li[2]/a/text()")
# print(li_list)

li_list =  et.xpath("//li") # 过滤只拿到谷歌
for li in li_list:
    # print(li) 打印li
    href = li.xpath("./a/@href")[0]  # ./表示当半节点
    text = li.xpath("./a/text()")[0] # ./表示当半节点
    print(href,text)
   # 后续的爬虫工作.....


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值