使用Python编写的带有下载进度的某页面视频下载器

#-*-coding=utf-8-*-
from sys import argv
import requests
import os,re,time,random, sys

import requests,re,time,random

def download_mp4(url,filename):
    proxies = {‘http‘: ‘http://127.0.0.1:1080‘}
    headers={‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36Name‘,‘Referer‘:‘http://91.com‘,‘Content-Type‘: ‘multipart/form-data; session_language=cn_CN‘}
    path = "81born/"
    if not os.path.exists(path):
        try:
            os.makedirs(path)
        except:
            pass
    path += str(filename)+".mp4"
    print("保存位置:", path)
    file_name = str(filename)
    with open(path, "wb") as f:
        print("下载进度:", end="")
        time_pre = time.time()
        response = requests.get(url=url, headers=headers, proxies=proxies, stream=True)
        total_length = response.headers.get(‘content-length‘)

        if total_length is None: # no content length header
            f.write(response.content)
        else:
            dl = 0
            total_length = int(total_length)
            char_list = [‘\\‘, ‘|‘, ‘/‘, ‘-‘ ]
            index = 0
            for data in response.iter_content(chunk_size=8192):
                dl += len(data)
                f.write(data)
                f.flush()
                done = int(40 * dl / total_length)

                time_now = time.time()
                sys.stdout.write("\r下载中: %s [%s%s] %.2f%%  %.2fMB / %.2fMB SPEED: %.2fMB/s" % (char_list[index] , ‘=‘ * done, ‘ ‘ * (40-done), (dl / total_length) * 100 , dl/1000000, total_length / 1000000, ( dl/(1024.0 * 1024.0 * 1024.0) )/ ((time_now - time_pre)/1000)  ) )
                sys.stdout.flush()
                index = (index + 1) % len(char_list)

def random_ip():
    a=random.randint(1,255)
    b=random.randint(1,255)
    c=random.randint(1,255)
    d=random.randint(1,255)
    return(str(a)+‘.‘+str(b)+‘.‘+str(c)+‘.‘+str(d))

def main():

	headers={‘Accept-Language‘:‘zh-CN,zh;q=0.9‘,‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36‘,‘X-Forwarded-For‘:random_ip(),‘referer‘: r‘http://91porn.com/‘,‘Content-Type‘: ‘multipart/form-data; session_language=cn_CN‘}
	url= str(input("\n目标页面链接地址: "))
	video_url=[]
	proxies = {‘http‘: ‘http://127.0.0.1:1080‘}
	base_req=requests.get(url=url,headers=headers,proxies=proxies)
	tittle=re.findall(r‘<div id="viewvideo-title">(.*?)</div>‘,str(base_req.content,‘utf-8‘,errors=‘ignore‘),re.S)
	t = None
	try:
	    t=tittle[0]
	    tittle[0]=t.replace(‘\n‘,‘‘)
	    t=tittle[0].replace(‘ ‘,‘‘)
	except IndexError:
	    pass

	video_url = re.findall(r‘<source src="(.*?)" type=\‘video/mp4\‘>‘,str(base_req.content,‘utf-8‘,errors=‘ignore‘))
	print(">> 开始下载")
	download_mp4(video_url[0], t)

if __name__ == "__main__":
	try:
		while True:
			main()
	except Exception as e:
		print(e)
	finally:
		pass

  主要是使用stdout.write 和 flush方法实现了一个控制台信息尾部刷新的效果

原文地址:https://www.cnblogs.com/litran/p/10546492.html

时间: 2024-08-30 17:28:36

使用Python编写的带有下载进度的某页面视频下载器的相关文章

iOS视频下载遇到的问题(附上AFHTTPRequestOperation下载视频方法)

前言: 最近做即时聊天项目,涉及到视频的上传下载.AFNetworking上传图片和视频(支持多张图片上传) 在视频下载中遇到一些问题,视频下载后无法播放 1 视频下载方法 /** * 下载文件 */ - (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag { NSFileManager *fileManag

快手视频怎么下载和保存?使用快手视频下载工具

本文转载自:怎么下载和保存快手app上的短视频? 快手上面的搞笑视频已经越来越让人无法自拔了,快手视频和app被全球超过4亿的用户使用,2017年3月23日,快手完成了腾讯领投3.5亿美元的融资.当你快手app看到自己特别喜欢的视频或者想把上面的视频处理下再发布到其他平台时,应该怎么把快手app上的视频下载下来? v.atob.site网站提供的快手视频下载和保存工具可以自动对快手视频的链接进行转换,具有在线下载并保存快手app上的视频到电脑或手机上的功能,你只需要通过以下几个简单步骤就可以轻松

Python urllib的urlretrieve()函数解析 (显示下载进度)

1 #!/usr/bin/python 2 #encoding:utf-8 3 import urllib 4 import os 5 def Schedule(a,b,c): 6 ''''' 7 a:已经下载的数据块 8 b:数据块的大小 9 c:远程文件的大小 10 ''' 11 per = 100.0 * a * b / c 12 if per > 100 : 13 per = 100 14 print '%.2f%%' % per 15 url = 'http://www.python.

Python HTTP下载文件并显示下载进度条

下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: import urllib import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/maste

Python 实现下载进度条(不带GUI界面)

话不多说,先上图该Python代码可以实现获取下载的文件名,下载文件的大小,下载速度等. 代码关键点: 1.关于下载文件名的获取:代码里使用两种方式获取:(1) 通过Content-Disposition属性,该属性是作为对下载文件的一个标识字段,存储着下载文件名(2) 直接通过链接获取,例如:sw.bos.baidu.com/sw-search-sp/software/8b23f8846df3d/BaiduMusicSetup.exe 文件后面直接就是文件名称了.2.关于下载文件大小的获取:直

Python编写简易木马程序(转载乌云)

Python编写简易木马程序 light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全插件)来撸代码,安装配置JEDI插件可以参照这里: /tips/?id=4413 首先准备好我们需要的依赖库,python hook和pythoncom. 下载安装python hook 下载安装pythoncom模块:

Python编写表白神器!向你的女神告白吧!!

马上就是七夕情人节了,送什么给你女神呢.鲜花什么的还不够!在写一个告白程序,向女神告白!让她看看你的爱意!哈哈哈哈! 程序和代码下载地址:点击下载 Python简介 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松

用Python编写博客导出工具

用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处 写在前面的话 我在 github 上用 octopress 搭建了个人博客,octopress 使用Markdown语法编写博文.之前我在CSDN博客上也写过不少的技术博文,都说自己的孩子再丑也是个宝,所以就起了把CSDN博客里面的文章导出到个人博客上的念头.刚开始想找个工具把CSDN博客导出为xml或文本,然后再把xml或文本转换为Markdown博文.可惜搜了一下现有博

如何给文件下载设置下载进度?

#python #xiaodeng #如何给文件下载设置下载进度? import urllib def callbackinfo(down,block,size): ''' 回调函数: down:已经下载的数据块 block:数据块的大小 size:远程文件的大小 ''' per=100.0*(down*block)/size if per>100: per=100 print '%.2f%%'%per url='http://www.sina.com.cn' local='sina.html'