zoukankan      html  css  js  c++  java
  • lxml库之xpath的使用

    xpath实例测试

    第一步:导包

    from lxml import etree

    第二步:设置一些测试数据,方便xpath使用

    s= """
        <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>
     """

    第三步:将以上的字符串进行解析

    tree = etree.HTML(s)

    第四步:根据指定的xpath语法查找相关的信息

    res = tree.xpath("//a/text()")

    第五步:返回结果

    for i in res:
        
        print(i)

    最终效果:

    解析(以上用到的路径表达式):

    // 从全局查找指定的标签

    / 从当前标签下查找指定的标签

    [num]表示要父级目录下的指定顺序的标签

    [限制条件] 根据限制条件来找到指定的标签

    text() 打印标签中的内容

    @ 标签属性指定相关属性

    整体代码:

    from lxml import etree
    
    s= """
        <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>
     """
    
    tree = etree.HTML(s) #将指定的字符串进行解析
    res = tree.xpath("//a/text()") #根据指定的xpath语法查找相关的信息
    # res = tree.xpath("//div/ul/li/a") #根据指定的xpath语法查找相关的信息
    
    for i in res:
        print(i)
        #下面方法是对应上面的res = tree.xpath("//div/ul/li/a")内容
        #decode 解码
        #显示element对象需要用到etree.tostring函数
        # print(etree.tostring(i, encoding="utf8").decode("utf8"))
    代码
  • 相关阅读:
    dijkstra (模板)
    LUOGU P2476 [SCOI2008]着色方案
    LUOGU P2344 奶牛抗议 (树状数组优化dp)
    LaTeX 公式大全
    LUOGU P1505 [国家集训队]旅游 (树链剖分+线段树)
    LUOGU P2416 泡芙 (缩点+树剖)
    LUGOU P1092 虫食算
    BZOJ 3090: Coci2009 [podjela] (树形背包)
    bzoj 4823 [Cqoi2017]老C的方块——网络流
    bzoj 3158 千钧一发——网络流
  • 原文地址:https://www.cnblogs.com/zhang1314/p/14143203.html
Copyright © 2011-2022 走看看