首先需要理解requests 模块

requests 模块

模块说明

requests是使用Apache2 licensed 许可证的HTTP库。
用python编写。
比urllib2模块更简洁。
Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。
在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。
现代,国际化,友好。
requests会自动实现持久连接keep-alive

响应内容
r.encoding                       #获取当前的编码
r.encoding = 'utf-8'             #设置编码
r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.status_code                     #响应状态码
r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()
r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功#*特殊方法*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status()             #失败请求(非200响应)抛出异常

解决问题

        file_name = username + "_test.csv"with open(file_name, "wb") as f:f.write(res.content)df = pd.read_csv(file_name, sep='\t')

理解之后获取文件流就迎刃而解了,很显然用 r.content 就这个方法就OK了,可以手动调试一下,比如我这边的获取的就是 csv 文件形式的数据,所有数据以\n分行,并通过\t分隔开。

[in]:res.content
[out]:b'Date\tCampaign Id\tOffer Id\tLocation\tImpression\tClick\tConversion\tEcpm\tCpc\tCtr\tCvr\tIvr\tSpend\n20211030\t8907\t37934\tUS\t0\t63\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t14052\t52045\tVN\t0\t32\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t14052\t52616\t**\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t14052\t54484\tID\t0\t20\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t9856\t44259\tUS\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t14052\t57610\tID\t44\t494\t0\t0.00000\t0.00000\t11.22727\t0.00000\t0.00000\t0.00000\n20211030\t14052\t62767\tUS\t523973\t28932\t1642\t1.88025\t0.03405\t0.05522\t0.05675\t0.00313\t985.20000\n20211030\t14052\t52062\tVN\t4\t45\t0\t0.00000\t0.00000\t11.25000\t0.00000\t0.00000\t0.00000\n20211030\t14052\t62767\tMM\t4\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211030\t14052\t52616\tID\t792563\t29384\t2337\t0.15534\t0.00419\t0.03707\t0.07953\t0.00295\t123.11500\n20211030\t9856\t40895\tUS\t0\t17\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t11745\t46226\tID\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t8907\t45078\tUS\t0\t20\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211030\t14052\t53382\tID\t1\t50\t0\t0.00000\t0.00000\t50.00000\t0.00000\t0.00000\t0.00000\n20211031\t14052\t62767\tUK\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211031\t14052\t52616\tSG\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211031\t8907\t37934\tUS\t0\t60\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t8907\t39150\tUS\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t14052\t52045\tVN\t0\t29\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t9856\t42378\tBR\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t14052\t52616\tUS\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211031\t8907\t38997\tUS\t0\t3\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t14052\t57610\tID\t43\t437\t0\t0.00000\t0.00000\t10.16279\t0.00000\t0.00000\t0.00000\n20211031\t9856\t40895\tUS\t0\t13\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t14052\t53382\tID\t1\t33\t0\t0.00000\t0.00000\t33.00000\t0.00000\t0.00000\t0.00000\n20211031\t14052\t62767\tMM\t2\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211031\t8907\t45078\tUS\t0\t26\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t9856\t44259\tUS\t0\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\n20211031\t14052\t62767\tUS\t594255\t35266\t1697\t1.71341\t0.02887\t0.05934\t0.04812\t0.00286\t1018.20000\n20211031\t14052\t62767\tSG\t1\t0\t0\t0.00000\t0\t0.00000\t0\t0.00000\t0.00000\n20211031\t14052\t54484\tID\t1\t15\t0\t0.00000\t0.00000\t15.00000\t0.00000\t0.00000\t0.00000\n20211031\t14052\t52616\tID\t740982\t34884\t3040\t0.22202\t0.00472\t0.04708\t0.08715\t0.00410\t164.51500\n20211031\t14052\t52062\tVN\t4\t46\t0\t0.00000\t0.00000\t11.50000\t0.00000\t0.00000\t0.00000\n'

一般流数据就下载到文件中,在对文件进行处理,比如我这边的就是通过pandas读取文件数据,并对数据进行加工和输出。
当然也可以将数据放到内存中,对内存进行读取。
这边是使用的pandas读取csv文件的形式,一般最常见的就是读取文件,不过想一想如果直接将数据存入内存中就不需要磁盘这个中介了,而且存在磁盘在某种情况下设置相同文件存在误读的风险。而根据pandas文档对read_csv的介绍,确实是可以读取内存的。

这边就用到了io模块的 BytesIO 和 StringIO

# beforefile_name = username + "_test.csv"with open(file_name, "wb") as f:f.write(res.content)df = pd.read_csv(file_name, sep='\t')# afterres_data = io.BytesIO(res.content)df = pd.read_csv(res_data, sep='\t')

【Python】通过 requests 获取文件字节流相关推荐

  1. Python利用Requests获取2TB大容量不限速小麦魔方网盘/小麦云盘(Own-Cloud.Cn)的文件直链并下载文件

    我们在浏览网页的时候一般都会看到很多好用的网盘,最近很多网盘都是一些开发者比较喜欢使用的,原因大多都是他们不像某盘一样限速,要求充会员而且还要广告.这些大容量的网盘大多也是开源的,所以我们也不能存储一 ...

  2. Python学习:获取文件夹中最新的文件/文件夹

    文章概述 获取最新修改文件 关于lambda的用法 os.path.getmtime用法 获取最新修改文件 获取文件夹中,最新修改过的文件或者文件夹 import os # 文件夹目录 path=&q ...

  3. Python 正则处理获取文件后缀

    本文档为个人博客文档系统的备份版本.作者:小游.作者博客:点击访问 获取文件后缀:re.search(".([a-z|A-Z]*?)$",s).group(1)

  4. Python笔记-requests获取web数据及下载文件

    使用Python去搞web获取数据相关的东西的确方便.302重定向也能自动解决. 如下FIddler抓包: 这个还是挺好的,可以直接处理302,挂证书也方便: 获取数据源码如下: def getCon ...

  5. python request下载-Python使用requests下载文件问题

    最近在爬一个网站,想直接下载其中的torrent文件,发现该torrent文件在下载页面是点击下载按钮,提交一个form表单到后台,然后开始下载,使用python requests提交表单,但是下载下 ...

  6. 用python的requests获取B站评论

    目录 前言 一.爬取的成果: 二.目标 实现的功能: 三.获取评论的方式 1.点赞投币数: 2.评论 小结: 大概的步骤: 四.操作 1.引入库 2.获得bv号 3.得到点赞投币等信息 4.通过bv得 ...

  7. python根据文件名获取文件路径_python 查看文件名和文件路径

    以下是把sourceDir目录下的以.JPG结尾的文件所有拷贝到targetDir目录下: >>>import os >>> import os.path > ...

  8. python调用接口获取文件_python接口文件使用说明

    首先, python 接口文件在安装好的 darknet 目录下的 python 文件夹,打开就 可以看到 这里的 darknet.py 文件就是 python 接口 用编辑器打开查看最后部分代码: ...

  9. 用python正确的获取文件最后被修改的时间

    一.问题描述: 时间的hour是不对的,其他都是正确的 二.根因定位: 因为utcfromtimestamp是获取utc的时间 UTC即世界标准时间,中国大陆.中国香港.中国澳门.中国台湾.蒙古国.新 ...

最新文章

  1. 编程求文件file1中数据的平均值,并将其与平均值最接近的数删除
  2. 喧喧发布 2.5.2 版本,主要修复已知问题
  3. 如何定义一个不能被继承的类
  4. kernel 3.10代码分析--KVM相关--虚拟机创建\VCPU创建\虚拟机运行
  5. 一次性上传多个文件到服务器端(一)
  6. 谷歌Pixel 4真机曝光:宽大额头内含诸多玄机
  7. bootstrap mysql分页_bootstrap实现分页
  8. 利用java poi对excel表的读写操作
  9. mysql config type_mysql_config_editor用法举例
  10. 在MFC中获取窗口\视图句柄 &获取当前活动的CView .
  11. 【国科大】计算机类课程点评(更新中)
  12. 算法导论(原书第3版) 目录
  13. 资深Java面试题及答案(汇总)
  14. WinRAR密码破解(精)
  15. 语音合成 g2p 字典设计
  16. 正则限定开头和取反 (否)
  17. Composer的基本使用
  18. 学画画软件app推荐_可以学画画的APP有哪些?
  19. 《架构师修炼之道》读书笔记之五:换位思考
  20. 5G网络架构与组网部署

热门文章

  1. CASE语句的使用方法
  2. Texstudio、latex中——多行注释快捷键
  3. HDMI_FPGA实现4K60TMDS编码解码之一
  4. 有趣的自然语言处理资源集锦
  5. Dave老师 oracle,我的Dave老师丨陈凌菲
  6. 网易云音乐API接口
  7. table无限嵌套table
  8. android contentResolver的使用
  9. java中main是什么_Java中的main()方法详解
  10. js获取鼠标点击坐标