文档章节

scrapy的Response和Selector编码格式介绍

mickelfeng
 mickelfeng
发布于 2016/08/05 11:39
字数 333
阅读 373
收藏 0

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

本文转载自:http://blog.csdn.net/a349458532/article/details/51690892

mickelfeng

mickelfeng

粉丝 237
博文 2802
码字总数 605868
作品 0
成都
高级程序员
私信 提问
Python爬虫Scrapy(三)_Scrapy Shell

本篇将介绍使用scrapy的命令,更多内容请参考:Python学习指南 Scrapy Shell Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查...

小七奇奇
2017/12/26
0
0
【Scrapy】 selector 学习记录三(Selector详细介绍)

Selector的详细介绍 selector 是对 response 的封装,用来对选取其中的特定内容。 下面是 Selector 的主要成员变量: response 一个HtmlResponse或者XmlResponse对象 text 一个unicode字符串...

ok绷forever
2017/01/01
99
0
教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 Scrapy吸引人的地方在于...

yangjiyue0520
2017/11/18
0
0
爬虫课堂(十五)|Request和Response(请求和响应)

Scrapy的Request和Response对象用于爬网网站,在介绍Scrapy框架原理之前先具体讲解下Request和Response对象。 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达下载程序,后者执...

小怪聊职场
2018/03/17
0
0
Scrapy爬取豆瓣电影Top250

这两天摸索了下scrapy,刚看文档的时候觉得有点生无可恋,scrapy框架个人还是觉得比较难懂的,需要学习的地方非常多,之前用beautifulsoup4爬过top250,比scrapy简单更容易理解!! Scrapy简...

Treehl
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
49分钟前
84
5
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部