美文网首页
代码使用Xpath

代码使用Xpath

作者: hcc_9bf4 | 来源:发表于2019-05-31 21:29 被阅读0次

    代码中使用xpath
    from lxml import etree
    两种方式使用:将html文档变成一个对象,然后调用对象的方法去查找指定的节点

    1. 本地文件
      tree=etree.parse(文件名)
    2. 网络文件
      tree=etree.HTML(网页字符串)
      ret=tree.xpath(路径表达式) ret 是一个列表
      例如:ret=tree.xpath('//div[@class="tang"]/ul/li[1]/text()')

    找href属性:
    ret=tree.xpath('//div[@class="tang"]/ul/li[last()]/a/@href')
    ret=tree.xpath('//div[@class="tang"]/ul//a/@href')

    逻辑运算本地实例:
    ret=tree.xpath('//div[@class="tang"]/ul//li[@class="love" and @name="yang"]/text()')
    打印love和name属性的文本

    模糊匹配实例:
    ret=tree.xpath('//li[contains(@class,"li")]/text()')
    打印所有带li的文本
    ret=tree.xpath('//li[contains(text(),"爱")]/text()')
    打印li标签下所有带‘爱’字文字
    ret=tree.xpath('//li[starts-with(@class,"ba")]/text()')
    打印属性以ba开头的标签内容

    找内容:
    ret=tree.xpath('//div[@class="song"]/text()')
    获取到不含标签的内容
    ret=tree.xpath('//div[@class="song"]//text()')
    获取到包含标签的内容

    另一种取内容方式:连起来

    from lxml import etree
    tree=etree.parse('xpath.html')
    ret=tree.xpath('//div[@class="song"]')
    string=ret[0].xpath('string(.)')
    print(string)
    print(string.replace('\n','').replace('\t',''))
    

    结果:

            火药
            指南针
            印刷术
            造纸术 
    
    火药指南针印刷术造纸术
    [Finished in 0.2s]
    

    本地xpat.htm代码示例:

    <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="http://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>
            </ol>
        </div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:代码使用Xpath

          本文链接:https://www.haomeiwen.com/subject/aongtctx.html