目标:xpath选择器和css选择器的用法

前文使用scrapy爬虫框架用到selector选择器了,本文补充两种选择器的使用细节

  • xpath选择器语法
  • css选择器语法
  • 掌握常用的xpath选择器和css选择器

知识就像是抽象出来的规则。学习在大脑中分类。


内容:xpath选择器语法

XPath 使用路径表达式来选取 XML或HTML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

选取节点:xml中的节点是以树结构(二叉树的树)来命名的,和HTML中的元素,标签是类似的。

  1. 选取节点用到的是表达式,表达式包括符号和元素。
    符号的定义:
    nodename:选取该节点的所有子节点。
    /:从根节点选-
    //: 从全局选
    .: 从当前节点选
    ..: 从父结点选
    @: 从包含此属性的节点中选
    通配符:*:匹配任何元素节点。@*: 匹配任何属性节点。

  2. 典型事例一
    文本:text(),选取文本。xpath选择器语法本无文本节点。
    1)表达式:'bookstore',等价于选取bookstore元素的所有子节点。
    2)表达式:'//book/title/text()',选取文中所有book节点下的title中的文本。
    3)表达式:'//book/title/@lang',选取文中所有book节点下的title的lang属性的值。
    4)表达式:'//title[@lang='eng']]/text()',选取文中所有具有节点下的title
    5)表达式:'//@lang',选取名为 lang 的所有属性。
    6)表达式:'/bookstore/*',选取 bookstore 元素的所有子元素。
    7)表达式:'//*',选取文档中的所有元素。
    8)表达式:'//title[@*]',选取所有带有属性的 title 元素。

  3. 常用xpath选择器表达式–HTLML(收藏)
    例如:response.xpath("//a/@href"):选取所有a标签下href属性的值,返回选择器列表selectorlist.

读书百遍其意自现:
response.xpath(’//title/text()’)
人话:选取所有title下的文本;
response.xpath(’//div[@id=“images”]/a/text()’).get()
人话:选取所有id为images的div标签中a标签的文本。
response.xpath(’//base/@href’).get()
人话:选取所有base标签中的href属性的值:
response.xpath(’//a[contains(@href, “image”)]/@href’).getall()
人话:包含某标签img,具有某属性的标签+属性值
response.xpath(’//a[contains(@href, “image”)]/img/@src’).getall()
人话:属性标签+标签+属性值

归根结底:重要是是落脚点是选择标签、选择标签的属性值,还是选择文本。
选择标签,以标签名称结尾,选择属性值以@属性结尾,选择文本以text()结尾。
再则,是选择全局,部分(特定位置或特定属性)。
最后,检查一遍,看能不能读通,是否完备没有歧义。


内容:css选择器语法


同理。css选择器也有语法,与xpath的区别是没有用路径形式,个人感觉还是xpath简单一点。读书百遍其意自现!
::text 取文本节点元素
文本节点没有属性,属性值已经是字符串值,也没有子节点。
*::text 选择所有子代文本节点
foo::text 空文本元素标签。没有text的标签,比如img标签,确取tex,getall返回空列表,get可设置默认结果。
意味着 .css(‘foo::text’).get() 即使元素存在,也无法返回“无”。
获得属性的值
::attr(name)取属性值
a::attr(href)选择 href 子链接
response.css('a::attr(href)')
.attrib['href']
获取属性,得到字典:
response.css(‘base’).attrib
{‘href’: ‘http://example.com/’}
获取属性,得到字典里的值。
response.css(‘base’).attrib[‘href’]
‘http://example.com/’


xpath选择器和css选择器的用法相关推荐

  1. xpath元素和css选择器的定位

    我们一般进行元素定位使用xpath和css选择器 1.xpath元素定位 1.什么是xpath? XPath 是一门在 XML 文档中查找信息的语言 XPath即为XML路径语言(XML Path L ...

  2. 【CSS选择器】CSS选择器有哪些?如何选择合适的使用?各类选择器的优劣势是什么?

    我们所熟知的CSS选择器有:通用选择器.标签选择器.id选择器.类选择器.群主选择器.关系型选择器.伪类选择器--本文会详细展开介绍CSS选择器类型.优劣势及其运用. CSS选择器 1.基础选择器 c ...

  3. HTML5类选择器使用,CSS选择器种类及使用方法

    CSS选择器种类及使用方法 2018年04月17日 | 萬仟网IT编程 | 我要评论 css选择器 有通配符选择器书写格式:*+{声名块} 并集选择器/组合选择器 书写格式;元素或类或id+" ...

  4. html5选择器优先级,css选择器优先级怎么比较

    css选择器优先级怎么比较 CSS选择器中比较常见的有标签选择器.ID选择器.类选择器以及子选择器.而事实上,CSS选择器如果细分下来,竟然多达40多种.那他们的优先级该怎么比较呢,下面就来看看吧. ...

  5. html5css选择器优先级,CSS选择器优先级[重要]

    CSS选择器优先级 浏览器是通过判断CSS优先级,来决定到底哪些属性值是与元素最为相关的,从而作用到该元素上.CSS选择器的合理组成规则决定了优先级,我们也常常用选择器优先级来合理控制元素达到我们理想 ...

  6. css球形颜色选择器,在CSS选择器中使用color颜色样式CSS代码

    CSS颜色样式篇目录认识CSS 颜色(color) 网页颜色基础 两种方法设置对象颜色样式 文字颜色控制color 网页背景颜色color 边框颜色color 网页color RGB设置 网页colo ...

  7. css去除选择器样式,CSS选择器样式排除一些选择

    123 etc 和CSS样式 #exclude1, #exclude2 {border:0; background:transparent; width:100%; height:100%; marg ...

  8. css 选择器 兼容性,css选择器与属性的兼容性问题

    选择器兼容问题: 1.css2选择器兼容问题主要出现在IE6-7 IE6不支持多个类直接组合 如:div.a.b会被当成div.b 解决办法:处理好选择器优先级 IE6不支持直接子元素,兄弟选择器 如 ...

  9. css语法 选择器 中括号,CSS 选择器语法参考手册

    DI 之 3.3 更多DI的知识(陆) 3.3.1  延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在标签上指 ...

最新文章

  1. python2异步编程_python异步编程 (转载)
  2. 【收藏】win10将wsl升级到wsl2
  3. 微软解释为什么Rust是系统编程的最佳选择
  4. GA,RC,Alpha,Beta,Final等软件版本名词释义
  5. Bootstrap 拼接式按钮菜单
  6. 桌面电源、USB、读卡总集线器的想法
  7. mt4代理服务器存放文件,MT4指标EA DLL等文件放置目录
  8. 数学分析教程(科大)——7.1笔记+习题
  9. PHP、MySQL分库分表中间件、支持协程
  10. 自定义函数求两个整数的绝对差值及排序
  11. 回溯算法求解桥本分数式
  12. 万娟 白话大数据和机械学习_白话大数据与机器学习 (高扬著) 带书签目录 完整pdf扫描版[71MB]...
  13. matlab图像处理(图像)
  14. DNA非编码区突变,DNA外显子突变,DNA内含子突变的区别,什么是DNA突变,什么是基因突变
  15. idea中为啥要用maven
  16. linux r7 4800u,r7 4800u和r7 4800h差距大吗?下面解读可以帮您
  17. 广东惠州市县镇地图JSON文件
  18. 知识付费-windows+宝塔安装教程
  19. 同源策略 - 学习/实践
  20. 大疆在美国被告,商务部预警!最后竟是中兴投资公司所为

热门文章

  1. 什么是SOAP,SOAP是什么
  2. 黑马程序员——java基础--面向对象(篇一)
  3. H7-TOOL发布V2.10, RTT增加搜索范围, 脱机烧录增加华大, 雅特力, 航顺,复旦微和nRF51新型号, 一键下载, HEX分段等(2021-12-29)
  4. 区块链——物联网解决方案平台(转载)
  5. 上下选项点击箭头html,点击上下箭头,页码发生改变(示例代码)
  6. jQuery eq() 方法
  7. 【思维导图】Java基础笔记整理
  8. ZooKeeper的实践(一):ZooKeeper仲裁机制
  9. HTML5 img图片 标签
  10. PHP资产管理系统源码可自由设计资产卡片,适用于IT办公行业固定资产管理