Scrapy框架—Selectors(关键)


当你爬取一个网页的时候,最普遍的任务你得去做就是从HTML资源中提取数据,有几个库可以让你获取这些,就像:

  • beatifulsoup:一个HTML解析库
  • lxml :一个XML解析库

Scrapy选择器

Scrapy它有自己的机制对于提取数据,我们叫它选择器,因为它选择了HTML文档中特定的部分要么通过CSS要么是XPath表达式。
XPath是一种语言选择XML文档中的节点,也可以用于HTML中。CSS是一种语言应用于HTML风格的文档中,它定义了选择器来将这些样式与特定的HTML元素关联起来。

Scrapy选择器是parsel库的一个薄薄的包装;这个包装器的目的是更好地集成Scrapy的响应对象。
parsel是一个独立的web抓取库,可以不使用Scrapy。它在底层使用lxml库,并在lxml API之上实现一个简单的API。这意味着粗糙的选择器在速度和解析精度上与lxml非常相似。

使用selcector

构造一个selectors

Response对象在.selector属性上公开选择器实例:

>>> response.selector.xpath('//span/text()').get()
'good'

或者,

>>> response.css('span::text').get()
'good'

Scrapy选择器是选择器类的实例,通过将TextResponse对象或标记作为unicode字符串(在文本参数中)传递来构造。通常不需要手动创建Scrapy选择器:response对象在Spider回调中可用,因此在大多数情况下,使用response.css()和response.xpath()快捷方式更方便。通过使用响应。选择器或这些快捷方式之一还可以确保只解析响应体一次。

但是如果需要,有可能直接使用Selector。从文本构造:

>>> from scrapy.selector import Selector
>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').get()
'good'

从response类构造,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'

选择器根据输入类型自动选择最佳解析规则(XML vs . HTML)。

开始使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值