xpath工具(解析)

  • 在XML文档中查找信息的语言,同样适用于HTML文档的检索 xpath辅助工具 chrome插件:Xpath Helper
  • 打开/关闭:Ctrl + shift + x
    Firefox插件:XPath Checker
    XPath编辑工具:XML quire
    匹配演示
    1. 查找所有的book节点 : //book

查找所有book节点下的title子节点中,lang属性为"en"的节点

//book/title[@lang=“en”]

  1. 查找bookstore下的第2个book节点下的title子节点 /bookstore/book[2]/title

  2. 选取节点 // : 从整个文档中查找节点 //price //book//price @ : 选取某个节点的属性值 //title[@lang=“en”]

  3. @的使用

  4. 选取1类节点 : //title[@lang=“en”]

  5. 选取存在某个属性节点: //title[@lang]

  6. 选取节点的属性值: //title/@lang

  7. 匹配多路径 :|

  8. xpath表达式1 | xpath表达式2

  9. 获取所有book节点下的title子节点和price子节点 //book/title | //book/price

xpath函数
contains():匹配一个属性值中包含某些字符串的节点
//title[contains(@lang,“e”)]
//div[contains(@class,“njjzw”)]

text():获取文本 //title[contains(@lang,"e")]/text() lxml库及xpath使用 安装 管理员 Prompt : conda install lxmlPrompt : conda install lxml 使用流程

导模块

from lxml import etreefrom lxml import etree
创建解析对象 
parseHtml = etree.HTML(html)
调用xpath 
rList=parseHtml.xpath('xpath表达式')
 ## 只要调用了xpath,结果一定是列表 ##
    from lxml import etree
    
    html = '''
    <div class="wrapper">
        <i class="iconfont icon-back" id="back"></i>
        <a href="/" id="channel">新浪社会</a>
        <ul id="nav">
            <li><a href="http://domestic.firefox.sina.com/" title="国内">国内</a></li>
            <li><a href="http://world.firefox.sina.com/" title="国际">国际</a></li>
            <li><a href="http://mil.firefox.sina.com/" title="军事">军事</a></li>
            <li><a href="http://photo.firefox.sina.com/" title="图片">图片</a></li>
            <li><a href="http://society.firefox.sina.com/" title="社会">社会</a></li>
            <li><a href="http://ent.firefox.sina.com/" title="娱乐">娱乐</a></li>
            <li><a href="http://tech.firefox.sina.com/" title="科技">科技</a></li>
            <li><a href="http://sports.firefox.sina.com/" title="体育">体育</a></li>
            <li><a href="http://finance.firefox.sina.com/" title="财经">财经</a></li>
            <li><a href="http://auto.firefox.sina.com/" title="汽车">汽车</a></li>
        </ul>
        <i class="iconfont icon-liebiao" id="menu"></i>
    </div>'''
    # 创建解析对象(etree.HTML())
    parseHtml = etree.HTML(html)
    # 解析对象调用xpath()
    # 1. 匹配出所有的 href 的值
    r1 = parseHtml.xpath('//a/@href')
    #print(r1)
    # 2. 把href中的 / 匹配出来
    r2 = parseHtml.xpath(
     '//div[@class="wrapper"]/a/@href')
    #print(r2)
    # 3. 把href中的非 / 匹配出来
    r3 = parseHtml.xpath(
       '//ul[@id="nav"]/li/a/@href')
    #print(r3)
    
    # 4. 获取所有a节点的文本内容
    r4 = parseHtml.xpath('//a/text()')
    #print(r4)
    # 5. 获取所有a节点文本内容(不包括最上面的新浪社会)
    r5 = parseHtml.xpath(
        '//ul[@id="nav"]/li/a')
    for s in r5:
        print(s.text)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值