0%

Python script save somethings

保存图片

urllib

用法:urlretrieve(url, filename=None, reporthook=None, data=None)

参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据)
参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度
参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头

1
2
3
4
5
6
7
8
9
# -*- coding: utf-8 -*-
import urllib
#常用
img_src = 'http://724.169pp.net/bizhi/2017/039/1.jpg'
urllib.request.urlretrieve(img_src,r'C:\\Users\\ME\\Desktop\\1.jpg')
#second
data = urllib.urlopen(img_src).read()
with open("bbb.jpg", "wb")as f: # wb是写二进制
f.write(data)

PIL+requests

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用
requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装
BytesIO是用来操作二进制数据的,因为图片是二进制数据,和它相对的自然是StringIO,这是用来存str的。他们的区别就好似python读写普通文件和二进制文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
import requests
from PIL import Image
from io import BytesIO
img_src = 'http://724.169pp.net/bizhi/2017/039/1.jpg'
response = requests.get(img_src)
image = Image.open(BytesIO(response.content))
#image = Image.open(StringIO(response.content))
image.save(r'C:\\Users\\ME\\Desktop\\' + '1.jpg')
#second 常用
src = "https://i0.hdslb.com/bfs/sycp/creative_img/201912/01b2f081d58e49c708c1d32b7b8c20ed.jpg"
#r = requests.get(src,headers=header)
with open("bbb.jpg", "wb")as f: # wb是写二进制
f.write(requests.get(src,headers=header).content)

保存视频

1
2
3
4
5
6
7
import re
import requests
response = requests.get('https://vd4.bdstatic.com/mda-jcrx64vi5vct2d2u/sc/mda-jcrx64vi5vct2d2u.mp4?auth_key=1557734214-0-0-d6a29a90222c6caf233e8a2a34c2e37a&bcevod_channel=searchbox_feed&pd=bjh&abtest=all')
video = response.content #把文件保存成二进制
with open(r'D:\图片\绿色.mp4','wb') as fw:
fw.write(video) #将文件内容写入该文件
fw.flush() #刷新