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. Atcoder ABC 139B

    Atcoder ABC 139B 题意: 一开始有1个插口,你的插排有 $ a $ 个插口,你需要 $ b $ 个插口,问你最少需要多少个插排. 解法: 暴力模拟. CODE: #include< ...

  2. Go语言函数之可变参数

    package main //.... 加参数类型 func Sum(nums ...int)int{ total:=0 for _,num:=range nums{ total+=num } ret ...

  3. Linux 下基础命令

    Linux:开源 Ubuntu Centos Deepin Debian Linux mint ... 1.省钱 2.省资源 Linux由unix演化而来 Linux:开源 Unix: 闭源 sola ...

  4. 以太坊Geth通过私钥导入新地址到钱包步骤(3种方法)

    一: 通过Geth客户端导入私钥: Open TextEdit Paste key into TextEdit without any extra characters or quotations S ...

  5. 安装mysql数据库及问题解决方法

    1.mysql官网下载安装包,官网地址:www.mysql.com [root@seiang software]# ll total 580020 -rw-r--r--. 1 root root 59 ...

  6. 类型TTreeView.items.add 与 TTreeView.items.addchild有何区别?(10分)

    我看了书上例子,好象两者都可以实现treeview中的node 的构建. addchild是给当前的node建一个子node,它比当前node要向右缩进几格add建立同级的node,不缩进 aNode ...

  7. Freemarker使用总结

    spring mvc 中 Freemarker 获取项目根目录,方便HTML页面配置各种路径 在SpringMVC框架中使用Freemarker试图时,要获取根路径的方式如下: <!-- Fre ...

  8. iOS实现TextField光标居中

    // // MyTextField.m // DriverEpoch // // Created by 思 彭 on 2017/10/12. // Copyright © 2017年 http://h ...

  9. HOSTS大法解决Github Clone太慢

    经常要clone github中的一些项目,无奈如果不爬梯子的话速度实在是龟速,经常1k/s,于是搜了下解决方法,改HOSTS大法. Windows下在C:/Windows/system32/driv ...

  10. 强化学习——Q-learning算法

    假设有这样的房间     如果将房间表示成点,然后用房间之间的连通关系表示成线,如下图所示:       这就是房间对应的图.我们首先将agent(机器人)处于任何一个位置,让他自己走动,直到走到5房 ...