一、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’]