美文网首页
爬虫:css 与 xpath 的区别

爬虫:css 与 xpath 的区别

作者: dex0423 | 来源:发表于2021-02-18 13:30 被阅读0次

    1. CSS v.s. XPATH

    • 总的来说,css 的定位效率相较于 xpath 更高,需要使用的代码的数量更少,更简洁美观。
      例如:
    多个属性匹配
    
    xpath           -->            //a[@class='name' and value='123']
    
    css             -->            a[.name][value='123']
    
    -----------------------------------------------------------------------------------------------------------------------------------------
    
    拥有某个属性的元素
    
    xpath           -->            //*[@title]
    
    css             -->            *[title]
    
    
    • CSS 的适用性相比 XPATH 要更少;
      -- 尤其是在查找 父节点、兄弟节点、模糊匹配 等场景中,一般使用 XPTAH 而不是 CSS;
      -- 详情可以参考下面的对比分析。

    2. CSS 和 XPATH 的功能对比

    对比项 定位方式 CSS XPATH
    常规属性 id #id_keyword //*[@id=‘id关键字‘]
    常规属性 class .class_name //*[@class=‘class属性名‘]
    常规属性 name [name=‘name关键字‘] //*[@name=‘name关键字‘]
    多个属性组合 —— [type=‘type关键字‘][name=‘name关键字‘] //input[@type=‘type关键字‘ and @name=‘name关键字‘]
    文本属性 —— 不支持 //*[text()=‘text字符串‘]
    层级关系 相对路径 form#form>span>input //form[@id=‘form]/span/input
    层级关系 索引 select#nr>option:nth-child(3) //select[@id=‘nr‘]/option[3]
    找父节点 —— 不支持 //*[@id=‘id关键字‘]/../..
    模糊匹配 模糊匹配text 不支持 //*[contains(text(),'text字符串')]
    模糊匹配 模糊匹配某个属性 不支持 /*[contains(@class,'class属性名')]
    模糊匹配 模糊匹配以xx开头 不支持 //*[starts-with(@id,'开头字符串')]

    相关文章

      网友评论

          本文标题:爬虫:css 与 xpath 的区别

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