zoukankan      html  css  js  c++  java
  • Python中Scrapy框架元素选择器XPath的简单实例

    原文标题:《Python网络爬虫—Scrapy的选择器Xpath》 对原文有所修改和演绎

    优势

    XPath相较于CSS选择器,可以更方便的选取

    • 没有id class name属性的标签
    • 属性或文本特征不显著的标签
    • 嵌套层次极其复杂的标签

    XPath路径

    定位方式

    / 绝对路径 表示从根节点开始选取
    // 相对路径 表示从任意节点开始
    

    基本的节点定位

    #查找html下的body下的form下的所有input节点
    /html/body/form/input
    
    #查找所有input节点
    //input
    

    使用通配符*定位

    #查找form节点下的所有节点
    //form/*#查找所有节点//*
    
    #查找所有input节点(input至少有爷爷辈亲戚节点)
    //*/input
    

    使用索引定位

    #定位 第8个td下的 第2个a节点
    //*/td[7]/a[1]
    
    #定位 第8个td下的 第3个span节点
    //*/td[7]/span[2]
    
    #定位 最后一个td下的  最后一个a节点
    //*/td[last()]/a[last()]
    

    使用属性

    #定位所有包含name属性的input节点
    //input[@name]
    
    #定位含有属性的所有的input节点
    //input[@*]
    
    #定位所有value=2的input节点
    //input[@value='2']
    
    #使用多个属性定位
    //input[@value='2'][@id='3']
    //input[@value='2' and @id='3']
    

    使用函数定位

    函数 含义
    contains(,) 前者中包含后者
    text() 获取节点中的字符串
    starts-with() 匹配起始位置的字符串

    <a class="menu_hot" href="/ads/auth/promote.html">应用推广</a>

    #定位href属性中包含“promote.html”的所有a节点
    //a[contains(@href,'promote.html')]
    
    #元素内的文本为“应用推广”的所有a节点
    //a[text()='应用推广']
    
    #href属性值是以“/ads”开头的所有a节点
    //a[starts-with(@href,'/ads')]
    

    使用XPath轴

    这部分类似BeautifulSoup中的sibling、parents、children方法。

    轴名称 含义
    ancestor 选取当前节点的所有先辈节点
    ancestor-or-self 选取当前节点的所有先辈节点及当前节点自己
    attribute 选取当前节点的所有属性
    child 选取当前节点的所有子节点
    descendant 选取当前节点的所有后代节点
    descendant-or-self 选取当前节点的所有后代节点及当前节点自己
    following 选取党建节点结束后的所有节点
    parent 选取当前节点的父节点
    preceding-sibling 选取当前节点之前的所有同辈节点
    self 选取当前节点自己
    原文地址:http://mp.weixin.qq.com/s/UT4UFDpgo2ER300zq_uqsQ
  • 相关阅读:
    CSS 兼容性调试技巧
    CSS 常用的兼容性调试技巧
    全局CSS设置
    CSS 盒子模型
    CSS表格属性
    HTML引入CSS的方法
    CSS 定位
    CSS display overflow 属性 cursor光标类型
    CSS 继承和优先级
    沟通表达
  • 原文地址:https://www.cnblogs.com/zhuxiaoxi/p/8530532.html
Copyright © 2011-2022 走看看