python下载网页视频
因网站不同需要修改。
下载 mp4 连接
from bs4 import BeautifulSoup
import requests
import urllib
import re
import json
encodestyle = 'gbk'
homepage='http://www.**.html'
htmlhead='http://www.**' # GetwVideoHtml() 函数用
#GetNPage_html(homepage,n)
#HtmlList2Mp4List(sumhtml)
#Writelist2json(listname,lists)
def GetwVideoHtml(furl):
retlist=[]
res = requests.get(furl)
res.encoding= encodestyle
soup = BeautifulSoup(res.text,'html.parser')
for Tag_contentpage in soup.select('.video_box'): #<div class= video_box>
for tag_a in Tag_contentpage.select('a'): #<a href = 'http-html' target='_blank'>
httphtml=tag_a['href']
retlist.append(htmlhead+httphtml) # use htmlhead
#print(imgsrc)
return retlist
def GetNPage_html(homepage,n):
rethtml=[]
for num in range(1,n+1):
if num == 1:
homewebpage=homepage
else:
homewebpage= homepage.rsplit('.',1)[0] + '_'+ str(num) + '.html'
print(homewebpage)
htmllinks = GetwVideoHtml(homewebpage)
rethtml = rethtml + htmllinks
return rethtml
def GetMp4SrcFromHtml(url):
headers = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
file = urllib.request.urlopen(url).read()
file = file.decode('gbk')
pattern = re.compile(r'(https?://.*.mp4)', re.I)
videolinks = pattern.findall(file)
videolinks = list(set(videolinks))
return videolinks
def HtmlList2Mp4List(sumhtml):
retmp4s = []
for html in sumhtml:
mp4s = GetMp4SrcFromHtml(html)
for mp4 in mp4s:
retmp4s.append(mp4)
return retmp4s
def Writelist2json(listname,lists):
length = str(len(lists))
with open('D:/ipynb/commfile/'+ listname + '_len_'+length +'.json', 'w') as fw:
json.dump(lists, fw)
sumhtml = GetNPage_html(homepage,3)
mp4list = HtmlList2Mp4List(sumhtml)
Writelist2json("mp4list",mp4list)
下载部分
from bs4 import BeautifulSoup
import requests
import urllib
import json
import threading
import datetime
import os
def mkdir(path):
folder = os.path.exists(path)
if not folder: #判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) #makedirs 创建文件时如果路径不存在会创建这个路径
print ("--- new folder... ---")
print ("--- OK ---")
else:
print ("--- There is this folder! ---")
def Schedule(a,b,c):
'''
回调函数:用于显示下载进度
a:已经下载的数据块
b:数据块的大小
c:远程文件的大小
'''
per = 100.0 * a * b / c
if (per > 100) :
per = 100
print ('%.2f%%' % per)
def createdownloadlink(name,url):
urllib.request.urlretrieve(url,name)
class myThread (threading.Thread):
def __init__(self, name, url):
threading.Thread.__init__(self) # 线程初始化
self.name = name # 赋值成员变量
self.url = url
def run(self):
print ("开始下载:" + self.name)
urllib.request.urlretrieve(self.url,self.name)
#createdownloadlink(self.name, self.url) # 在线程中运行的函数
print ("完成下载:" + self.name)
def DownMp4file(lists):
dateASfolder=datetime.datetime.now().strftime('%m-%d')
foldername = 'D:/videos/'+dateASfolder
mkdir( foldername)
threadlist = [];#存放线程的数组,相当于线程池
filenum=0
for url in lists:
filename = foldername + '/'+ str(filenum)+ '.mp4'
filenum=filenum+1
thread = myThread(filename, url) # 创建线程对象
threadlist.append(thread) #这个线程放到线程threads
return threadlist
# 执行部分
with open('D:/ipynb/commfile/srcmp4s_len_66.json', 'r') as fr:
srcmp4s = json.load(fr)
print(len(srcmp4s))
srcmp4s[0]
threads= DownMp4file(srcmp4s)
for t in threads[:10]:#让线程池中的所有数组开始
t.start();
for t in threads[:10]:
t.join();#等待所有线程运行完毕才执行一下的代码
python下载网页视频的更多相关文章
- (Python基础教程之二十二)爬虫下载网页视频(video blob)
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- Linux 使用 you-get 指令下载网页视频
今天无意中发现一个下载网页视频的好办法 在 Linux 系统中,可以利用 you-get 指令直接下载网页中的视频 1.更新 sudo apt-get update 2.安装 pip sudo apt ...
- python下载网页转化成pdf
最近在学习一个网站补充一下cg基础.但是前几天网站突然访问不了了,同学推荐了waybackmachine这个网站,它定期的对网络上的页面进行缓存,但是好多图片刷不出来,很憋屈.于是网站恢复访问后决定把 ...
- python 下载bilibili视频
说明: 1.清晰度的选择要登录,暂时还没做,目前下载的视频清晰度都是默认的480P 2.进度条仿linux的,参考了一些博客修改了下,侵删 3.其他评论,弹幕之类的相关爬虫代码放在了https://g ...
- python下载youtube视频
谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...
- 爬虫 | Python下载m3u8视频
目录 从 m3u8 文件中解析出 ts 信息 按时间截取视频 抓取 ts 文件 单文件测试 批量下载 合并 ts 文件 将合并的ts文件转化为视频文件 参考资料: m3u8格式介绍 ts文件格式介绍 ...
- python下载网页上公开数据集
URL很简单,数据集分散开在一个URL页面上,单个用手下载很慢,这样可以用python辅助下载: 问题:很多国外的数据集,收到网络波动的影响很大,最好可以添加一个如果失败就继续请求的逻辑,这里还没有实 ...
- python下载网页源码 写入文本
import urllib.request,io,os,sysreq=urllib.request.Request("http://echophp.sinaapp.com/uncategor ...
随机推荐
- Nginx——location常见配置指令,alias、root、proxy_pass
1.[alias] 别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向[alias]配置的路径.如: location /test/ { alias /home/sftp/i ...
- 音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转)
概述 之前介绍了YUV码流的采样格式,下面分析下YUV码流的存储格式,YUV码流的存储格式与采样格式息息相关.总的来讲,YUV存储格式主要分为两种: planar 平面格式 指先连续存储所有像素点的 ...
- 【转载 Hadoop&Spark 动手实践 2】Hadoop2.7.3 HDFS理论与动手实践
简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...
- Android应用资源分析(老罗链接整理)
1.Android资源管理框架(Asset Manager)简要介绍和学习计划 2.Android应用程序资源的编译和打包过程分析 3.Android应用程序资源的查找过程分析 https://my. ...
- MongoDB增删改查实例
MongoDB之Java测试代码(DAO层),mongodbdao MongoInit.java是数据库初始化及连接类 MongoUtils.java是对mongodb的各种操作方法 MongoIni ...
- phpunit assert断言分类整理
布尔类型 方法名 含义 参数 返回值 assertTrue 断言为真 assertFalse 断言为假 NULL类型 方法名 含义 参数 返回值 assertNull 断言为NULL ...
- caffe网络结构可视化在线工具
http://ethereon.github.io/netscope/#/editor shift+enter
- Android 反编译apk
工具介绍: apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 下载地址:https://bitbucket.org/iBotPeaches/apktool/downl ...
- vector 使用 c++11 Lambda 表达式 排序
struct SIndexDataNew { 1 optional short shtMarket; 2 optional string sCode; 3 optional int iDate; 4 ...
- 在 windows 上安装免安装版的mysql
在 windows 上安装免安装版的 1. 下载路径 https://downloads.mysql.com/archives/community/ 2. 解压 假设解压后的路径为:E:\Enviro ...