因网站不同需要修改。

下载 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下载网页视频的更多相关文章

  1. (Python基础教程之二十二)爬虫下载网页视频(video blob)

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  2. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  3. Linux 使用 you-get 指令下载网页视频

    今天无意中发现一个下载网页视频的好办法 在 Linux 系统中,可以利用 you-get 指令直接下载网页中的视频 1.更新 sudo apt-get update 2.安装 pip sudo apt ...

  4. python下载网页转化成pdf

    最近在学习一个网站补充一下cg基础.但是前几天网站突然访问不了了,同学推荐了waybackmachine这个网站,它定期的对网络上的页面进行缓存,但是好多图片刷不出来,很憋屈.于是网站恢复访问后决定把 ...

  5. python 下载bilibili视频

    说明: 1.清晰度的选择要登录,暂时还没做,目前下载的视频清晰度都是默认的480P 2.进度条仿linux的,参考了一些博客修改了下,侵删 3.其他评论,弹幕之类的相关爬虫代码放在了https://g ...

  6. python下载youtube视频

    谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...

  7. 爬虫 | Python下载m3u8视频

    目录 从 m3u8 文件中解析出 ts 信息 按时间截取视频 抓取 ts 文件 单文件测试 批量下载 合并 ts 文件 将合并的ts文件转化为视频文件 参考资料: m3u8格式介绍 ts文件格式介绍 ...

  8. python下载网页上公开数据集

    URL很简单,数据集分散开在一个URL页面上,单个用手下载很慢,这样可以用python辅助下载: 问题:很多国外的数据集,收到网络波动的影响很大,最好可以添加一个如果失败就继续请求的逻辑,这里还没有实 ...

  9. python下载网页源码 写入文本

    import urllib.request,io,os,sysreq=urllib.request.Request("http://echophp.sinaapp.com/uncategor ...

随机推荐

  1. 解决windows 下 mysql命令行导入备份文件 查询时乱码的问题

    Mysql导入乱码,一般在命令行会遇到.下面说的是命令行的情况下解决乱码问题: 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -uroo ...

  2. Mac NVM 配置

    1.NVM 简介 NVM(node version manager)是一个可以让你在同一台机器上安装和切换不同版本 node 的工具. GitHub 地址 2.NVM 环境配置 2.1 安装 NVM ...

  3. 理解 CI 和 CD 之间的区别(翻译)

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  4. mysql触发器详解 mysql触发器

    目录 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 MySQL 5.1包含对触发程序的支持.触发程序是与表有关的命名数据库对象,当表 ...

  5. 【Spark深入学习 -13】Spark计算引擎剖析

    ----本节内容------- 1.遗留问题解答 2.Spark核心概念 2.1 RDD及RDD操作 2.2 Transformation和Action 2.3 Spark程序架构 2.4 Spark ...

  6. 【转】RPC简单介绍

    RPC简单介绍 RPC 1. RPC是什么 RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络 ...

  7. neo1973 audio subsystem

    fhttp://wiki.openmoko.org/wiki/Neo_1973_audio_subsystem using Bluetooth headset with GSM NOTE none o ...

  8. NaviSoft31.源码开发完成

    NaviSoft是作者一人开发完成,从之前的1.0版本,到现在的3.1版本.历经2年时间,开发完成 下面是NaviSoft的源码结构 加QQ群了解更多信息

  9. SAP 生产订单变更管理 OCM Order Changement Management

    SAP OCM Order Changement Management  一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...

  10. Java8学习笔记目录

    Java8学习笔记(一)--Lambda表达式 Java8学习笔记(二)--三个预定义函数接口 Java8学习笔记(三)--方法引入 Java8学习笔记(四)--接口增强 Java8学习笔记(五)-- ...