0
点赞
收藏
分享

微信扫一扫

Scrapy数据解析(XPath、CSS)

辰鑫chenxin 04-12 22:00 阅读 2

Scrapy数据解析(CSS、XPath)

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

目录

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::textdiv下的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(…)解析出父节点下所有文字
举报

相关推荐

0 条评论