用xpath方法解析数据入门实例

前言:

        上一篇文章讲到了三种方法来解析数据,分别是正则表达式、Bs4还有xpath,这三种方法各有特点,也都有各自的应用场景,不过xpath可以说是较为常用的了。这一篇就来简单介绍一下xpath方法的入门实例。

正文:

代码实例1:

# 首先需要安装lxml
# pip install lxml
# xpath相当于路径,在xml中根据父子关系进行查找
from lxml import etree
xml = '''

    1
    细水长流
    1.68
    高山流水
    
        周大墙
        林天则
        周杰伦
        陈承宇
        
二十多
胜天半子
盛气凌人
阿迪斯 欧文
''' tree = etree.XML(xml) result1 = tree.xpath("/book/nick/text()") result2 = tree.xpath("/book//nick/text()") # //表示后代,后代中所有nick标签都提取出来 result3 = tree.xpath("/book/*/nick/text()") # *表示一代,通配符 print(result1) print(result2) print(result3)

从这个实例来看就能很明显的看出xpath是专门为xml准备的,像是寻找路径那般通过父子关系,去找到你想要的那个值,像树一样。

以下是输出结果: 

用xpath方法解析数据入门实例_第1张图片

代码实例2:

首先是一个HTML文件:




     
    Title


    
    
  1. 飞机
  2. 大炮
  3. 火车
李嘉诚
胡辣汤

这个HTML文件的代码可供大家用来测试,也省了大家手打HTML的时间 。

from lxml import etree
tree = etree.parse("b.html")

# 打印出百度、谷歌、搜狗
result1 = tree.xpath("/html/body/ul/li/a/text()")
print(result1)

# 只打印出第一个li的信息,即“百度”
result2 = tree.xpath("/html/body/ul/li[1]/a/text()")
print(result2)

# 打印出href属性值为dapao的被标记文本
result3 = tree.xpath("/html/body/ol/li/a[@href='dapao']/text()")
print(result3)

# 遍历
ol_li_list = tree.xpath("/html/body/ol/li")
for li in ol_li_list:
    # 从每一个li中提取到文字信息
    result4 = li.xpath("./a/text()")  # 在li中继续去寻找
    print(result4)
    result5 = li.xpath("./a/@href")  # 拿到属性值
    print(result5)

# 两种可能会用到的方式
print(tree.xpath("/html/body/ul/li/a/@href"))

用xpath方法解析数据入门实例_第2张图片

总结:

       在这里 xpath的语法可以看出是更为直接的,相比于正则表达式来说,不过正则表达式有更广泛的应用,xpath是专门针对xml文档的。这里也可以看出如果是爬虫的话,使用xpath更加的简洁明了,可读性更强,效率相对也会更高。

        这篇文章会持续更新,在我空闲的时候会增添多一些实例。有兴趣的小伙伴可以点赞+收藏!你们的支持是我最大的动力

你可能感兴趣的:(Python学习日志,xpath,python,爬虫)