1.视频爬取

 1.下载视频的源码如下:
import os
import requests
from bs4 import BeautifulSoup
import threading
from bj.models import Video # globals(repo_dir = './../tmp')
repo_dir = './../tmp/video' # 定义请求数据的返回结果的函数
def get_response(url):
# 为了防止被网站禁止访问,携带浏览器参数,假装浏览器请求
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
} # 取出返回的数据
response =requests.get(url=url,headers=headers).content
return response # 解析网页数据获取视频描述和视频下载url
def get_content_video(html):
# 通过bs4解析,用内置的解析器html.parser
soup=BeautifulSoup(html,'html.parser')
# 获取每个视频模块的信息
cont=soup.select('.j-r-list-c')
# 定义一个数组存放视频desc+url
urlList=[]
for item in cont:
# 查找第一个a标签的内容,作为我们后面保存MP4的文件名
name=item.find('a').text
# 查找视频url
pmUrl=item.select('.j-video')[0].get('data-mp4') # 提取视频id用于后期生成文件名
video_id=item.select('.j-video')[0].get('data-id')
#以元组的形式添加到数组
urlList.append((name,pmUrl,video_id))
return urlList # 使用threading异步下载视频
def download(urlList,page):
#判断'./../tmp/vodeo'文件夹是否存在
f_path=os.path.join(repo_dir,page)
if not os._exists(f_path):
print('路径不存在,马上创建!')
os.makedirs(f_path)
for item in urlList:
#判断当前视频是否有url
if item[1] is None:
continue
# 创建视频的路径-->[-3:]截取文件名后缀
f_path_video=os.path.join(f_path,'%s.%s'%(item[2],item[1][-3:])) #通过多线程的方式下载文件,增加下载速度
thread=threading.Thread(target=save_video,args=(f_path_video,item[1]))
#启动线程
thread.start() #如果下载正常则将视频数据存入数据库中
Video.objects.create(
video_id=item[2],
video_url=item[1],
video_desc=item[0],
) # 正式下载视频文件
def save_video(f_path_video,video_url):
response=get_response(video_url)#调用方法返回MP4文件的二进制流数据
# 通过文件写入的方式保存成文件
with open(f_path_video,'wb') as f:
f.write(response) #主函数
def main():
for i in range(1,50):
print("第" + i + "页")
url = 'http://www.budejie.com/video/%s' % str(i)
html = get_response(url)
urlList=get_content_video(html)
download(urlList,str(i)) #
# if __name__=="__main__":
# main() '''
** 由于我们这里仅用于测试,所以我们之抓取一页
** 链接最后的数字表示抓取的数据页码,由于首页的1可以不写,也可以写上
** 为了大家更好的理解多页的表示,这里我们仅抓取一页,并且链接后面写有页码1
'''
def test():
url = 'http://www.budejie.com/video/1'
html = get_response(url)
urlList = get_content_video(html)
download(urlList, str(1))

2. 切割视频 - 视频尾部多余部分的切割(这里需要安装ffmpeg很简单,问度娘)

 import os
import subprocess
import datetime
def substring(date):
r=date.decode()
r=r.strip()
rlist=r.split(":")
result=(int(rlist[0])*60*60)+(int(rlist[1])*60)+(float(rlist[2]))
return result def sub_video():
# url="/home/facelive/Downloads/videos/"
# url2="/home/facelive/Downloads/sub_videos/" # 硬盘路径(原视频存放路径)
url="/media/facelive/Elements/videos/"
# 切割后的视频存放路径
url2="/media/facelive/Elements/sub_videos/"
fileList= os.listdir(url) for file in fileList:
#获取当前文件的视频长度
strcmd=["ffmpeg -i "+url+file+" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//"]
result=subprocess.run(args=strcmd,stdout=subprocess.PIPE,shell=True)
date=result.stdout
print(type(date))
print(date)
time=substring(date)
end=time-4
sub="ffmpeg -ss 0 -t "+str(end)+" -accurate_seek -i "+url+file+" -codec copy -avoid_negative_ts 1 "+url2+file+'' videoresult=subprocess.run(args=sub,shell=True)
print(time)
print("视频截取完成!!") def test():
url = "/home/facelive/Downloads/videos/"
fileList = os.listdir(url)
for file in fileList:
print(file)

3. 视频加水印

 import os
import subprocess
import datetime def logo_video(): # 硬盘路径
url = "/media/facelive/Elements/videos/"
url3="/media/facelive/Elements/logo_videos/"
fileList = os.listdir(url) for file in fileList: sub = "ffmpeg -i "+url+file+" -i /home/facelive/Downloads/image/11.png -filter_complex overlay=W-w " + url3 + file + '' videoresult = subprocess.run(args=sub, shell=True)
print("视频logo完成!!")

转载:https://blog.csdn.net/wsywb111/article/details/78855145

Python爬取百思不得姐的视频+视频的切割+给视频添加水印

20190728-Python爬取视频&切割视频&视频加水印的更多相关文章

  1. Python 爬取单个网页所需要加载的地址和CSS、JS文件地址

    Python 爬取单个网页所需要加载的URL地址和CSS.JS文件地址 通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题.图片.文章等等).而我从测试的角度去使用Python爬 ...

  2. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  3. python爬取快手小姐姐视频

    流程分析 一.导入需要的三方库 import re #正则表表达式文字匹配 import requests #指定url,获取网页数据 import json #转化json格式 import os ...

  4. python爬取豆瓣小组700+话题加回复啦啦啦python open file with a variable name

    需求:爬取豆瓣小组所有话题(话题title,内容,作者,发布时间),及回复(最佳回复,普通回复,回复_回复,翻页回复,0回复) 解决:1. 先爬取小组下,所有的主题链接,通过定位nextpage翻页获 ...

  5. python爬取b站排行榜视频信息

    和上一篇相比,差别不是很大 import xlrd#读取excel import xlwt#写入excel import requests import linecache import wordcl ...

  6. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  7. 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

    由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...

  8. Python爬取视频指南

    摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://w ...

  9. 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!

    众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...

  10. 【Python爬虫案例】用Python爬取李子柒B站视频数据

    一.视频数据结果 今天是2021.12.7号,前几天用python爬取了李子柒的油管评论并做了数据分析,可移步至: https://www.cnblogs.com/mashukui/p/1622025 ...

随机推荐

  1. 1626:【例 2】Hankson 的趣味题

    1626:[例 2]Hankson 的趣味题题解 [题目描述] Hanks 博士是 BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson ...

  2. 十三、LVM 逻辑卷管理

    http://note.youdao.com/noteshare?id=0252cd5dcf7f2e5f11de5b3672779201&sub=ED011464ADA3467D9424271 ...

  3. k8s之yaml详解

    k8s之yaml详解 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数 ...

  4. struts2方法无法映射问题:There is no Action mapped for namespace [/] and action name [m_hi] associated with context path []

    使用struts的都知道,下面使用通配符定义的方式很常见,并且使用也很方便: <action name="Crud_*" class="example.Crud&q ...

  5. Undertow

    Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动 ...

  6. selenium安装与更新

    1.通过pip show selenium 查看是否已经安装过selenium,如果已经安装selenium会显示安装的selenium的版本信息. 如果在使用pip 查看命令报Unknown or ...

  7. 【C/C++】Linux的gcc和g++的区别

    Windows中我们常用vs来编译编写好的C和C++代码:vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多 ...

  8. js 移除数组中的内容

    使用方法:arr.splice(arr.indexOf(ele),length):表示先获取这个数组中这个元素的下标,然后从这个下标开始计算,删除长度为length的元素 这种删除方式适用于任何js数 ...

  9. Netty实践场景

    数据通信 如果需要考虑的是两台机器(甚至多台)怎么使用Netty进行通信.大体上分为三种: 1 第一种:使用长连接通道不断开的形式进行通信.也就是服务端和客户端的通道一直处于开启状态. 如果服务器性能 ...

  10. 重读APUE(8)-进程、进程组、会话

    进程: 是系统中一段程序执行的实体,也是资源分配和调度的基本单位: 进程组: 为了方便管理多个进程,可以将多个进程加入到一个进程组内: 每个进程都属于一个进程组,但是同一个进程组内可以有多个进程: 每 ...