scrapy的Response和Selector编码格式介绍

来源:互联网 发布:淘宝上靠谱的香港代购 编辑:程序博客网 时间:2024/06/06 09:02

一、response介绍

当spider发出请求之后会返回response。response是一个类,其中包括一些内置的属性。

body

  • body是response返回的内容,它的类型是str,所以body的内容编码类型是爬取页面的原类型。
  • 例如网页的编码类型是GBK,那么body也是GBK的。
  • 如果需要把body转换成Unicode,可以做以下处理:

response.body.decode(response.encoding)

例如: response.body.decode(‘gbk’)

二、选择器Selector介绍

当抓取网页时,你做的最常见的任务是从HTML源码中提取数据。Scrapy选择器构建于 lxml 库之上,这意味着它们在速度和解析准确性上非常相似。Scrapy selector是以文字(text)或TextResponse构造的Selector实例。

class scrapy.selector.Selector(response=None, text=None, type=None)

  • response 是 HtmlResponse 或 XmlResponse 的一个对象,将被用来选择和提取数据。
  • text 是在 response 不可用时的一个unicode字符串或utf-8编码的文字。将 text 和 response
    一起使用是未定义行为。
  • type 定义了选择器类型,可以是 “html”, “xml” or None (默认).

response通过选择器Selector作用后,再通过处理(如XPath)后得到的数据都是Unicode的形式

sel = Selector(response)

例子:

>>> from scrapy.selector import Selector
>>> from scrapy.http import HtmlResponse

>>> body = ‘good
>>> Selector(text=body).xpath(‘//span/text()’).extract()
>>> [u’good’]

0 0