当前位置: 首页 > news >正文

处理响应

响应基本API

http状态码

Response对象
>>dir(response) #查询response对象API
* statue_code   #状态码
* reason    #状态码含义
* url
* history #`Response <Response>`list
* elpased #发送request与接收response之间的时间间隔
* request
* encoding 
* raw
#: File-like object representation of response (for advanced usage).
#: Use of ``raw`` requires that ``stream=True`` be set on the request.
# This requirement does not apply for use internally to Requests.
* content
* text
* json
* response.json()['str']    #字典操作提取
复制代码

下载图片

  • 利用爬虫自动下载图片
  • 远程下载服务器上的文本文件

图片下载

浏览器模拟:利用Chrome开发者工具获取浏览器的User-Agent 构建request 读取流data 存入数据

def img_download():
    url = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_' \
          '10000&sec=1555837805429&di=4daaef4aa7a422aa0da2b5c7a138c988&imgtype=0&src=' \
          'http%3A%2F%2Fcdn.ifanr.cn%2Fwp-content%2Fuploads%2F2014%2F06%2Fgithub.png'
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
    response = requests.get(url, headers=header, stream=True)
    print(response.status_code)
    print(response.reason)
    print(response.headers)
    with open('demo.jpg','wb') as fd:
        for chunk in response.iter_content(128):
            fd.write(chunk)

def download_image_improve():
    url = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_' \
          '10000&sec=1555837805429&di=4daaef4aa7a422aa0da2b5c7a138c988&imgtype=0&src=' \
          'http%3A%2F%2Fcdn.ifanr.cn%2Fwp-content%2Fuploads%2F2014%2F06%2Fgithub.png'
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
    response = requests.get(url, headers=header, stream=True)
    from contextlib import closing
    with closing(requests.get(url, headers=header, stream=True)) as response:
        with open('demo1.jpg', 'wb') as fd:
            #每128写入一次
            for chunk in response.iter_content(128):
                fd.write(chunk)
复制代码

事件钩子(Evetnt Hooks)

*args 用来将参数打包成tuple给函数体调用 **kwargs 打包关键字参数成dict给函数体调用 注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

def get_key_info(response, *args, **kwargs):
    #回调函数
    print(response.headers['Content-Type'])

def main():
    #request请求时注册回调函数
    requests.get('https://api.github.com', hooks=dict(response=get_key_info))
复制代码

转载于:https://juejin.im/post/5cbc020451882532bb2d2749

相关文章:

  • Java中的IO操作
  • 运维自动化系统部署
  • css_css 盒子水平居中 垂直居中
  • MySQL中的EXPLAIN
  • 蚂蚁金服 mPaaS 模块化开发与架构重构深度解析
  • 【译】Vue 的小奇技(第十三篇):在 Nuxt.js 中重定向 404 页面
  • Java 生成 PDF 文档
  • 市场分析——行业背景分析
  • 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?
  • charls 抓包
  • [树状数组]JZOJ 4658 小Z调顺序
  • 1.1(设计模式)工厂模式
  • Redis 桌面管理工具 RedisDesktopManager 2019.0 发布
  • nginx统计日志中客户端ip访问次数
  • MGR实现分析 - 成员管理与故障恢复实现
  • 深入了解以太坊
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 10个确保微服务与容器安全的最佳实践
  • angular组件开发
  • Bytom交易说明(账户管理模式)
  • css选择器
  • FastReport在线报表设计器工作原理
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • java中的hashCode
  • k8s如何管理Pod
  • Mybatis初体验
  • Otto开发初探——微服务依赖管理新利器
  • overflow: hidden IE7无效
  • Python_网络编程
  • Service Worker
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 世界上最简单的无等待算法(getAndIncrement)
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 项目管理碎碎念系列之一:干系人管理
  • 项目实战-Api的解决方案
  • 消息队列系列二(IOT中消息队列的应用)
  • 小李飞刀:SQL题目刷起来!
  • 用jquery写贪吃蛇
  • hi-nginx-1.3.4编译安装
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (42)STM32——LCD显示屏实验笔记
  • (C#)获取字符编码的类
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (层次遍历)104. 二叉树的最大深度
  • (四)Controller接口控制器详解(三)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)EXC_BREAKPOINT僵尸错误
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET关于 跳过SSL中遇到的问题
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .net中应用SQL缓存(实例使用)