Scrapy数据解析(XPath、CSS)

Scrapy数据解析(CSS、XPath)

在Scrapy中原有的解析语法与原来的有点略微的区别

目录

  • Scrapy数据解析(CSS、XPath)
    • CSS解析器
    • XPath解析器

CSS解析器

示例:

  • response.css('a')返回的是selector对象
  • response.css('a').extract()返回的是a标签对象
  • response.css('a::text').extract_first()返回的是第一个a标签中文本的值
  • response.css('a::attr(href)').extract_first()返回的是第一个a标签中href属性的值
  • response.css('a[href*=image]::attr(href)').extract()返回所有a标签中href属性包含image的值
  • response.css('a[href*=image] img::attr(src)').extract()返回所有a标签下image标签的src属性

基本语法:

语法 说明
* 选择所有节点
div h1::text div下的h1标签的文本
#container 选择id为container的节点
.container 选择所有class包含container的节点
div,p 选择所有 div 元素所有 p 元素
li a 选取所有li 下所有a节点
ul + p 选取ul后面的第一个p元素
div#container > ul 选取id为container的div的第一个ul子元素
ul ~p 选取与ul相邻的所有p元素
a[title] 选取所有有title属性的a元素
a[href=”http://baidu.com”] 选取所有href属性为http://baidu.com的a元素
a[href*=”baidu”] 选取所有href属性值中包含baidu的a元素
a[href^=”http”] 选取所有href属性值中以http开头的a元素
a[href$=”.jpg”] 选取所有href属性值中以.jpg结尾的a元素
input[type=radio]:checked 选择选中的radio的元素
div:not(#container) 选取所有id为非container 的div属性
li:nth-child(3) 选取第三个li元素
li:nth-child(2n) 选取第偶数个li元素
a::attr(href) 选取a标签的href属性
a::text 选取a标签下的文本

XPath解析器

示例:

  • response.xpath('//a'):返回所有a标签的节点对象
  • response.xpath('//a').extract():返回所有a标签的HTML内容
  • response.xpath('//a/text()').extract_first():返回第一个a标签中的文本内容。
  • response.xpath('//a/@href').extract_first():返回第一个a标签中的href属性值
  • response.xpath('//a[contains(@href,"image")]/@href').extract():返回所有href属性中包含"image"的a标签的href属性值
  • response.xpath('//a[contains(@href,"image")]/img/@src').extract():返回所有href属性中包含"image"的a标签下的img标签的src属性值

基本语法:

语法 说明
artical 选取所有artical元素的子节点
/artical 选取根元素artical
./artical 选取当前元素下的artical
…/artical 选取父元素下的artical
artical/a 选取所有属于artical的子元素a元素
//div 选取所有div 子元素,无论div在任何地方
artical//div 选取所有属于artical的div 元素,无论div元素在artical的任何位置
//@class 选取所有class属性
a/@href 选取a标签的href属性
a/text() 选取a标签下的文本
string(.) 解析出当前节点下所有文字
string(…) 解析出父节点下所有文字
上一篇:基于双向长短期神经网络的碳排放量预测,基于bilstm的碳排放量预测-LSTM的基本定义


下一篇:graylog使用Sidecars方式收集springboot程序的日志