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 ...
随机推荐
- (七):处理MFC
(一):简单介绍 为了可以在一个Winelib应用中使用MFC,你须要首先使用Winelib又一次编译MFC. 在理论上,你应该为Windows的MFC编写一个封装(怎样编写在后面介绍).可是,在实践 ...
- 物联网全景动态图谱2.0|PaaS物联网平台汇总(上篇)
物联网智库 原创 物联网智库 整理发布 转载请注明来源和出处 ------ [导读] ------ 毫无疑问,2018年物联网对行业的深度变革才刚刚开启. 物联网产业链企业的质与量将进入全面爆 ...
- 【转载】SpringCloud-Eurek 心跳阈值说明
在使用eureka过程中,查看监控界面,出现: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE ...
- Python时间,日期,时间戳之间转换,时间转换时间戳,Python时间戳转换时间,Python时间转换时间戳
#1.将字符串的时间转换为时间戳方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strp ...
- python中字符串前的r什么意思
Python中,u表示unicode string,表示使用unicode进行编码,没有u表示byte string,类型是str,在没有声明编码方式时,默认ASCI编码.如果要指定编码方式,可在文件 ...
- 【OpenFOAM案例】03 Docker安装OpenFOAM
"工欲善其事必先利其器",软件装不上,讲再多的使用技巧也是白搭.近期不少留言说OpenFOAM不容易安装,今天来谈谈如何在Linux下利用Docker安装OpenFOAM. Lin ...
- vue 的rem 配置和flexible.js的应用
1.环境的配置: C:\Windows\System32\drivers\etc 2.多行注释: 光标放在函数中间,连按两次:“Ctrl+Alt+D”,就会出现以下的内容 3.总结使用过程:vue移动 ...
- Redux 入门到高级教程
Redux 是 JavaScript 状态容器,提供可预测化的状态管理. (如果你需要一个 WordPress 框架,请查看 Redux Framework.) Redux 除了和 React 一起用 ...
- Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中
Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...
- OEL的下载
https://edelivery.oracle.com 注意的是:第一次下载安装的时候需要首先安装installer.exe软件,然后再下载即可.