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. java生成zip包兼容Linux

    /* 这个方法只用在windows中用服务器为Linux就不行 */ package common.util; import java.io.File;import java.io.FileInput ...

  2. MySQL查询top N记录

    下面以查询每门课程分数最高的学生以及成绩为例,演示如何查询 top N记录.下图是测试数据,表结构和相关 insert 脚本见<常用SQL之日期格式化和查询重复数据>. 使用自连接[推荐] ...

  3. codeforces gym #101161E - ACM Tax(lca+主席树)

    题目链接: http://codeforces.com/gym/101161/attachments 题意: 给出节点数为$n$的树 有$q$次询问,输出$a$节点到$b$节点路程中,经过的边的中位数 ...

  4. 关于在vue项目中使用wangEditor

    1,vue中安装wangEditor 使用的npm安装 npm install wangeditor --save 2,创建公用组件 在components中创建wangEnduit文件夹 组件内容为 ...

  5. 基于Ryu REST API的VLAN实现

    目录 0.预备知识 1.实验内容 2.编写脚本addflow.sh一步实现流表下发 3.使用api查看流表 4.实验结果 0.预备知识 ryu控制器的API文档:ryu.app.ofctl_rest ...

  6. 第二章 c语言概述

    一.#include指令和头文件 1.#include C预处理指令,C编译器在编译前对源代码做一些准备工作 2.stdio.h标准输入输出头文件,提供了关于输入输出的信息供编译器使用 头文件包含了建 ...

  7. Oracle JDBC 标准连接实例

    Oracle JDBC 标准连接实例 // 创建一个数据库连接 Connection con = null; // 创建预编译语句对象,一般用PreparedStatement不用Statement ...

  8. Swift 基本语法

    如果创建的是 OS X playground 需要引入 Cocoa : import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, Wo ...

  9. mongodb download

    https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl

  10. Redis查询_Tips

    基础知识——介绍 Redis简介 REmote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个完全 ...