scrapy 2.3 构造选择器
响应对象公开 Selector
实例对 .selector
属性:
>>> response.selector.xpath('//span/text()').get()
'good'
使用xpath和css查询响应非常常见,因此响应中还包含两个快捷方式: response.xpath()
和 response.css()
:
>>> response.xpath('//span/text()').get()
'good'
>>> response.css('span::text').get()
'good'
Scrapy选择器是 Selector 通过传递 TextResponse 对象或标记作为字符串(在 text 争论)。
通常不需要手动构造垃圾选择器: response 对象在spider回调中可用,因此在大多数情况下使用它更方便 response.css() 和 response.xpath() 捷径。通过使用 response.selector 或者这些快捷方式之一,您还可以确保响应主体只解析一次。
但如果需要,可以使用 Selector 直接。从文本构建:
>>> from scrapy.selector import Selector
>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').get()
'good'
从响应构造- HtmlResponse 是其中之一 TextResponse 子类:
>>> from scrapy.selector import Selector
>>> from scrapy.http import HtmlResponse
>>> response = HtmlResponse(url='http://example.com', body=body)
>>> Selector(response=response).xpath('//span/text()').get()
'good'
Selector 根据输入类型自动选择最佳的解析规则(XML对HTML)。