Python Requests 请求二进制数据(图片、音频及视频)

使用 requests 请求由二进制组成的图片、音频及视频

以请求这个 https://www.gaoyuanqi.cn/images/avatar.png 头像为例

打印二进制数据

Response.text

1
2
3
4
5
import requests

res = requests.get('https://www.gaoyuanqi.cn/images/avatar.png')
print(res.status_code)
print(res.text)

部分运行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
200
����JFIF��C




%-(0%()(��C



(((((((((((((((((((((((((((((((((((((((((((((((((((����"�� ��?!1A"Qa2q� �#B��3R��CSbr�$4sc������$!1A"Q2#��R��;����v^��W8me:�i�8NY7��I�yl�(�>j퍰����4���p py�WW��B?
����e�ͺݰGG.��aT�xA��ϼ�ҧl�Ly���KY1�2U�}��)�^đ��ͻ����x��2є+�>�7�����>"گx�y�>����ZQX_Ϊx���O�>_���D��Gb.��[{j�=�JҘ�Q Q���:��O�(;z�^�5rk��{��p�y͸C4Dh�<S�!�b��#
��/2����f˷���p�����:�/�Z "��8
#}#�����^64$���~�m�s�%[��a

图片是二进制数据,在打印时会转换为 str 类型,即图片转换成字符串,因此出现乱码

Response.content

1
2
3
4
5
import requests

res = requests.get('https://www.gaoyuanqi.cn/images/avatar.png')
print(res.status_code)
print(res.content)

部分运行结果如下:

1
2
200
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x06\x04\x05\x06\x05\x04\x06\x06\x05\x06\x07\x07\x06\x08\n\x10\n\n\t\t\n\x14\x0e\x0f\x0c\x10\x17\x14\x18\x18\x17\x14\x16\x16\x1a\x1d%\x1f\x1a\x1b#\x1c\x16\x16 , #&\')*)\x19\x1f-0-(0%()(\xff\xdb\x00C\x01\x07\x07\x07\n\x08\n\x13\n\n\x13(\x1a\x16\x1a((((((((((((((((((((((((((((((((((((((((((((((((((\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x01\x00\x00\x07\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\xff\xc4\x00?\x10\x00\x02\x01\x03\x02\x04\x05\x02\x03\x06\x04\x05\x04\x03\x00\x00\x00\x01\x02\x03\x04\x11\x05!\x06\x121A\x07\x13"Qa2q\x14\x81\x91\x08\x15#B\xa1\xb13R\xc1

开头有一个 b ,这是 bytes 类型的数据

保存二进制数据

1
2
3
4
5
import requests

res = requests.get('https://www.gaoyuanqi.cn/images/avatar.png')
with open('avatar.png', 'wb') as f:
f.write(res.content)

运行后会在当前目录下生成名为 avatar.png 的图片

requests-avatar