scrapy 2.3 构造选择器

2021-06-09 10:07 更新

响应对象公开 ​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)。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号