美文网首页
Scrapy 框架中的Scrapy选择器(十八)

Scrapy 框架中的Scrapy选择器(十八)

作者: 梦捷者 | 来源:发表于2019-07-31 11:32 被阅读0次

一、Scrapy选择器的概述

Scrapy提供基于lxml库的解析机制,它们被称为选择器。因为,它们“选择”由XPath或CSS表达式指定的HTML文档的某部分。Scarpy选择器的API非常小,且非常简单。

二、构造Scrapy选择器

Scrapy选择器是通过scrapy.Selector类,通过传递文本或者TextResonse对象构造的实例。它会根据输入类型自动选择最佳解析规则。

  • XML与HTML,它们的构造方式如图:
  • 注意
    (1)构造html用Selector类来进行构造HTML和XML,他是一个Scrapy选择器的对象。
    (2)利用extract()或者extract_first()方法进行提取字符串。

三、使用Scrapy选择器

1、选择器提供2个方法来提取标签
  • xpath()
    基于xpath的语法规则
  • css()
    基于css选择器的语法规则
2、快捷方式
  • response.xpath()
  • response.css()
    用前端的选择器来进行获取数据

注意:它们返回的选择器列表

3、提取文本
  • selector.extract()
    返回文本列表
  • selector.extract_first()
    返回第一个selector的文本,没有返回None,可以设置default

四、嵌套选择器

有时候我们获取标签需要多次调用选择方法(.xpath()或.css())

1、response.css('img').xpath('@src')
它的原理见下图案例:
2、Selector还有一个.re()方法使用正则表达式提取数据的方法。它返回的是字符串。它一般使用在xpath(),css()方法之后,用来过滤文本数据。在他之后不能用xpath()和css()方法。
3、re_first()用来返回第一个匹配的字符串,就在re的基础上提取一个数据而已,而re可以提取多条数据。

例如:response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s(.)')

相关文章

网友评论

      本文标题:Scrapy 框架中的Scrapy选择器(十八)

      本文链接:https://www.haomeiwen.com/subject/yynfdctx.html