Scrapy数据解析(XPath、CSS)

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(…)解析出父节点下所有文字
  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个强大的Python框架,用于抓取和提取数据。它支持多层抓取数据的功能,使得我们能够轻松地在网站的不同页面上抓取相关的数据。 在Scrapy中,我们可以使用多个Spider来实现多层抓取。每个Spider负责从特定的页面中抓取数据,并可以定义其将要跟进的链接。通过这种方式,我们可以在不同层级上迭代地抓取数据。 首先,我们需要定义一个Spider,用于抓取初始页面的数据。在这个Spider中,我们可以使用XPathCSS选择器来定位并提取我们想要的数据。同时,我们还需要定义将要跟进的链接,并将其添加到抓取队列中。 接下来,当Spider开始抓取数据时,它将会解析初始页面,并跟进我们定义的链接。在跟进的页面上,我们可以再次使用XPathCSS选择器来提取更多的数据,并将要跟进的链接添加到抓取队列中。 通过这种方式,Spider可以在多个层级上迭代地抓取数据。我们可以根据需要定义多个Spider,并使用Scrapy的调度器来管理它们的抓取顺序。这样,我们就能够高效地抓取和提取出我们想要的数据。 总而言之,Scrapy是一个强大的框架,可以通过多层抓取来提取我们需要的数据。使用Scrapy,我们可以轻松地定义和管理多个Spider,并在不同层级上迭代地抓取数据。这使得我们能够更加高效和灵活地进行数据抓取和提取的工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值