一、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(.)')
网友评论