折腾:
【未解决】爬取bp.pep.com.cn中的义务教育教科书资源
期间,先去搞清楚requests中如何下载二进制数据,保存为图片文件。
python requests binary image
“原始响应内容
在罕见的情况下,你可能想获取来自服务器的原始套接字响应,那么你可以访问 r.raw。 如果你确实想这么干,那请你确保在初始请求中设置了 stream=True。具体你可以这么做:
>>> r = requests.get(‘https://api.github.com/events’, stream=True)
>>> r.raw
<requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)
‘\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03’”
“二进制响应内容
你也能以字节的方式访问请求响应体,对于非文本请求:
>>> r.content
b'[{“repository”:{“open_issues”:0,”url”:”https://github.com/…
Requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。
例如,以请求返回的二进制数据创建一张图片,你可以使用如下代码:
>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))”
去试试r.content
resp.content是bytes的二进制数据:
然后就可以直接去write到二进制文件中了:
resp = requests.get(curPictureUrl, headers=gHeaders) with open(saveFullPath, 'wb') as saveFp: saveFp.write(resp.content)
去看看下载保存出来的图片文件:
是正常的,没问题。
【总结】
requests下载图片url保存为二进制的图片文件:
import requests resp = requests.get(pictureUrl) with open(saveFullPath, 'wb') as saveFp: saveFp.write(resp.content)
即可。