python入门之scrapy框架中Request对象和Response对象的介绍

目录
  • 一、Request对象
  • 二、发送POST请求
  • 三、Response对象

一、Request对象

Request对象主要是用来请求数据,爬取一页的数据重新发送一个请求的时候调用,其源码类的位置如

下图所示:

这里给出其的源码,该方法有很多参数:

class Request(object_ref):

    def __init__(self, url, callback=None, method='GET', headers=None, body=None,
                 cookies=None, meta=None, encoding='utf-8', priority=0,
                 dont_filter=False, errback=None, flags=None, cb_kwargs=None):

        self._encoding = encoding  # this one has to be set first
        self.method = str(method).upper()
        self._set_url(url)
        self._set_body(body)
        if not isinstance(priority, int):
            raise TypeError(f"Request priority not an integer: {priority!r}")
        self.priority = priority

        if callback is not None and not callable(callback):
            raise TypeError(f'callback must be a callable, got {type(callback).__name__}')
        if errback is not None and not callable(errback):
            raise TypeError(f'errback must be a callable, got {type(errback).__name__}')
        self.callback = callback
        self.errback = errback

        self.cookies = cookies or {}
        self.headers = Headers(headers or {}, encoding=encoding)
        self.dont_filter = dont_filter

        self._meta = dict(meta) if meta else None
        self._cb_kwargs = dict(cb_kwargs) if cb_kwargs else None
        self.flags = [] if flags is None else list(flags)

这里对各个做一个简单的解释:

  1. url :这个request对象发送请求的url。
  2. callback: 在下载器下载相应的数据后执行的回调函数。
  3. method:请求的方法,默认为GET方法,可以设置为其他方法。
  4. headers:请求头,对于一些固定的设置,放在settings.py中指定就可以了, 对于那些非固定的,可以在发送请求的时候指定。
  5. body:请求体,传入的是请求参数。
  6. meta:比较常用。用于在不同的请求之间传递数据用。
  7. encoding:编码。默认为utf-8,使用默认的就可以了。
  8. dont_filter: 表示不由调度器过滤,在执行多次重复的请求的时候用得比较多。
  9. errback:在发生错误的是有执行的函数。

二、发送POST请求

有时候我们想要在请求数据的时候发送post请求,那么这时候需要使用Request的子类FormRequest来实现。如果想要在爬虫一开始就发送POST请求,那么需要在爬虫类中重写start_requests(self) 方法,并且不在调用 start_urls 里的url。

三、Response对象

Response对象一般是由scrapy给你自动构建的,因此开发者不需要关心如何创建Response对象。而是如何使用它。Response对象有很多属性,可以用来提取数据的。

主要有以下属性:

  1. meta: 从其他请求传过来的meta属性,可以用来保持多个请求之间的数据连接。
  2. encoding: 返回字符串编码和解码的格式。
  3. text: 将返回来的数据作为unicode字符串返回
  4. body: 将返回来的数据作为bytes 字符串返回。
  5. xpath: xpath 选择器
  6. css : css选择器。

到此这篇关于python基础之scrapy框架中Request对象和Response对象的介绍的文章就介绍到这了,更多相关Request对象和Response对象的介绍内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Asp.net response对象与request对象使用介绍

    1.Response:服务器发给客户端信息,或者说是服务器的向用户发送输出结果. Redirect:让客户端重新定向到指定的 URL. Write:写出指定字符串. 2.request:客户端发给服务器,或者说是从客户端取得信息. form:从使用post提交方式的表单获取表单元素的值. querystring:取回查询字符串中的变量值,适用于get提交方式的表单. 举一个列子:一个登陆页面,还有一个主页面.当登陆页面登陆成功后,就自动跳转到主页面. 1.login.aspx 复制代码 代码如下

  • Django框架HttpResponse和HttpRequest对象学习

    目录 HttpRequest对象 1.我们可以打印这个request对象 2.我们可以打印观察一下它具备哪些方法 常用属性和方法功能讲解: HttpResponse对象 HttpResponse对象的属性和方法 属性 方法 HttpResponse的子类 返回数据的响应函数 HttpRequest对象 在前面你也跟着本博主编写了那么多的视图函数,但是每个视图函数它都会接收一个名为request的参数. 是不是很好奇:视图函数接收到的request到底是个什么对象!!! 1.我们可以打印这个req

  • python requests response值判断方式

    这段时间在技术上没太多的思考的,只是碰到几个虾米小问题. 往往问题不大,也会致使你花心思去排解. 今遇到一个reqeusts返回值的一个问题,花了不短时间调,后来发现是reqeusts返回的对象也含有 魔法函数 处理. 我这边的业务是cdn的刷新预缓存,对于该项目来说 http code 200, 2xx, 404 都是友好的. #jb51.net import requests r = None try: r = requests.get("https://jb51.net") ex

  • 基于Python中request请求得到的response的属性问题

    Python中request请求得到的response,即通过request得到的数据: import requests response = requests.get(https://www.jd.com/) response 的属性 1.返回状态码 response.status_code http请求的返回状态,2XX 表示连接成功,3XX 表示跳转 ,4XX 客户端错误 , 500 服务器错误 2.返回http响应的文本内容 response.text http响应内容的字符串(str)

  • 关于ThreadLocal对request和response的用法说明

    记得在一篇博文中看到描述threadLocal的一句话: ThreadLocal除了适用于多线程保证每条线程都有自己的变量副本外,还适用于在线程上下文中共享某些变量值. 这两种说法是有区别的.前者强调的是,使用ThreadLocal对副本做保护,避免同步.加锁,降低效率:后者强调的是,某个变量线程上下文中,A处用到.B处用到.C处用到,先在入口处set一个值,后使用ThreadLocal的get方法直接在需要用到的地方拿这个值. 项目中,最近理由cookie存值,使用到了threadLocal这

  • python入门之scrapy框架中Request对象和Response对象的介绍

    目录 一.Request对象 二.发送POST请求 三.Response对象 一.Request对象 Request对象主要是用来请求数据,爬取一页的数据重新发送一个请求的时候调用,其源码类的位置如 下图所示: 这里给出其的源码,该方法有很多参数: class Request(object_ref):     def __init__(self, url, callback=None, method='GET', headers=None, body=None,                

  • Python:Scrapy框架中Item Pipeline组件使用详解

    Item Pipeline简介 Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清晰.验证和存储数据. 当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处理数据. 每个Item管道的组件都是有一个简单的方法组成的Python类. 他们获取了Item并执行他们的方法,同时他们还需要确定的是是否需要在Item管道中继续执行下一步或是直接丢弃掉不处理. Item管道通常执行的过程有 清理HTML数据 验证解析到的数据(检查Item是否包含必要的字段) 检查是

  • Flask框架中request、请求钩子、上下文用法分析

    本文实例讲述了Flask框架中request.请求钩子.上下文用法.分享给大家供大家参考,具体如下: request 就是flask中代表当前请求的request对象: 常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转换为字符串 * form 记录请求中的表单数据 MultiDict args 记录请求中的查询参数 MultiDict cookies 记录请求中的cookie信息 Dict headers 记录请求中的报文头 EnvironHeaders method 记录请求

  • Python爬虫实例——scrapy框架爬取拉勾网招聘信息

    本文实例为爬取拉勾网上的python相关的职位信息, 这些信息在职位详情页上, 如职位名, 薪资, 公司名等等. 分析思路 分析查询结果页 在拉勾网搜索框中搜索'python'关键字, 在浏览器地址栏可以看到搜索结果页的url为: 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=', 尝试将?后的参数删除, 发现访问结果相同. 打开Chrome网页调试工具(F12), 分析每条搜索结果

  • python入门之Scrapy shell的使用

    前言: 我们想要在爬虫中使用xpath.beautifulsoup.正则表达式,css选择器等来提取想要的数据,但是因为scrapy是一个比较重的框架,每次运行都要等到一段时间,因此要去验证我们提取规则是否正确,是一个比较麻烦的事情,因此,scrapy提供了一个shell.用来方便的测试规则,当然也不仅仅局限于这一个功能. 打开Scrapy shell: 进入命令行终端,进入到scrapy项目所在的目录,然后进入到scrapy框架所在的虚拟环境中,输入命令 scrapy shell [链接] ,

  • thinkPHP5.1框架中Request类四种调用方式示例

    本文实例讲述了thinkPHP5.1框架中Request类四种调用方式.分享给大家供大家参考,具体如下: 1. 传统调用 访问方式:http://127.0.0.1/demo/demo3/test?name=kk&age=22 <?php /** * Created by PhpStorm. * User: 10475 * Date: 2018/8/27 * Time: 22:59 */ namespace app\demo\controller; use think\Request; cl

  • python实战之Scrapy框架爬虫爬取微博热搜

    前言:大概一年前写的,前段时间跑了下,发现还能用,就分享出来了供大家学习,代码的很多细节不太记得了,也尽力做了优化. 因为毕竟是微博,反爬技术手段还是很周全的,怎么绕过反爬的话要在这说都可以单独写几篇文章了(包括网页动态加载,ajax动态请求,token密钥等等,特别是二级评论,藏得很深,记得当时想了很久才成功拿到),直接上代码. 主要实现的功能: 0.理所应当的,绕过了各种反爬. 1.爬取全部的热搜主要内容. 2.爬取每条热搜的相关微博. 3.爬取每条相关微博的评论,评论用户的各种详细信息.

  • Python爬虫进阶Scrapy框架精文讲解

    目录 一.前情提要 为什么要使用Scrapy 框架? 二.Scrapy框架的概念 三.Scrapy安装 四.Scrapy实战运用 这一串代码干了什么? 五.Scrapy的css选择器教学 按标签名选择 按 class 选择 按 id 选择 按层级关系选择 取元素中的文本 取元素的属性 一.前情提要 为什么要使用Scrapy 框架? 前两篇深造篇介绍了多线程这个概念和实战 多线程网页爬取 多线程爬取网页项目实战 经过之前的学习,我们基本掌握了分析页面.分析动态请求.抓取内容,也学会使用多线程来并发

  • 浅谈web服务器项目中request请求和response的相关响应处理

    我们经常使用别人的服务器进行构建网站,现在我们就自己来写一个自己的服务来使用. 准备工作:下载所需的题材及文档 注:完整项目下载 一.request请求获取  1.了解request请求 在写服务器之前,我们需要知道客户端发送给我们哪些信息?以及要求我们返回哪些信息?经过测试我们能够知道用户客户端发送的信息有以下几点: 客户端发送到服务器端的请求消息,我们称之为请求(request),其实就是一个按照http协议的规则拼接而成的字符串,Request请求消息包含三部分: 请求行 消息报头 请求正

  • Python的Django REST框架中的序列化及请求和返回

    序列化Serialization 1. 设置一个新的环境 在我们开始之前, 我们首先使用virtualenv要创建一个新的虚拟环境,以使我们的配置和我们的其他项目配置彻底分开. $mkdir ~/env $virtualenv ~/env/tutorial $source ~/env/tutorial/bin/avtivate 现在我们处在一个虚拟的环境中,开始安装我们的依赖包 $pip install django $pip install djangorestframework $pip i

随机推荐