视频下载-------python

版权声明:莫者 https://blog.csdn.net/weixin_40709439/article/details/82392499

今天看了一个小视频,很好笑

说的是:欲练神功,挥刀自宫,如不自宫,也能成功

观看链接:

https://m.baidu.com/?from=1012852s#iact=wiseindex%2Ftabs%2Fnews%2Factivity%2Fnewsdetail%3D%257B%2522linkData%2522%253A%257B%2522name%2522%253A%2522iframe%252Fmib-iframe%2522%252C%2522id%2522%253A%2522feed%2522%252C%2522index%2522%253A0%252C%2522url%2522%253A%2522https%253A%252F%252Fm.baidu.com%252Ffeed%252Fdata%252Fvideoland%253Fpd%253Dwise%2526vid%253D10387516369412214647%2526srchid%253D155134ca1ebc06ad%2526src%253Dcommom%2526is_invoke%253D1%2526innerIframe%253D1%2522%252C%2522isThird%2522%253Afalse%252C%2522title%2522%253Anull%257D%257D

不过不是下载链接,我准备找到它的下载链接,然后利用python 的requests下载。或者urllib库也是可以下载的

先随便找个视频下载链接,测试下脚本

http://newoss.maiziedu.com/yxyh4/pand-02.mp4

脚本如下:

# encoding=utf8 
import requests
import sys

reload(sys)
sys.setdefaultencoding('utf8')#改变默认的编码为utf-8
print('start...')

url = 'http://newoss.maiziedu.com/yxyh4/pand-02.mp4'
r = requests.get(url,stream=True)        #stream 参数控制下载文件过大。当stream=True时不会立即下载文件,先利用下面的iter_content()函数控制下载文件大小范围
# print(r.text)

with open('zigong.mp4','wb') as f:
	for chunk in r.iter_content(chunk_size=1024*1024):#此函数一块一块的遍历,文件不能超过1KM。
    # iter_content:一块一块的遍历要下载的内容
    # iter_lines:一行一行的遍历要下载的内容

		if chunk:
			f.write(chunk)

print('over')

测试过程中遇到的问题

第一编码问题:UnicodeEncodeError: 'ascii' codec can't encode character u'\uf

这是因为:python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。

扫描二维码关注公众号,回复: 4242587 查看本文章

在文件头添加下面代码块即可
 

# encoding=utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')

第二文件大小控制问题:如果下载的视频过大,会容易使电脑卡顿,感觉十分不好

所以我使用了,参数stream=True,默认为false

当为true是,脚本不会立即下载链接的视频,而是先便利其字节,计算总大小

再结合以下函数设置下载的最大值,我这里是1024*1024=1KM(默认b)

   iter_content:一块一块的遍历要下载的内容
   iter_lines:一行一行的遍历要下载的内容

如果视频不大于1m就进行下载

脚本测试成功,就差“欲练神功,挥刀自宫,如不自宫,也能成功”下载链接了,暂时还没找到,找到再补上

猜你喜欢

转载自blog.csdn.net/weixin_40709439/article/details/82392499