简单python网络爬虫批量下载视频

这篇具有很好参考价值的文章主要介绍了简单python网络爬虫批量下载视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

寒假闲来无事,决定尝试一下用python写一个小网络爬虫批量下载视频。

由于是第一次写网络爬虫,可以说是两眼一抹黑,整个程序都是自己一点点试出来的,所以程序本身肯定有一些漏洞和缺陷,如果有建议请批评指正。

由于CSDN审核不允许出现具体网址否则会因为版权问题不通过审核(图片也不行),所以只好把所有带网址的内容都删掉。程序本身是可以运行的,如果想尝试的话做简单修改就好了。

首先,我们需要以下几个库:

requests,bs4,ffmpy3,re

import requests
from bs4 import BeautifulSoup 
import ffmpy3
import re 

首先,我搜罗到一个有我想要的资源的网址,搜索节目得到视频列表,

现在我们通过F12或者Ctrl+shift+C进入开发者模式,会出现一个界面,里面是HTML语言,也就是编写成这个网站的程序(就先叫他element界面)。

每一集的选项背后都是一个链接,点击之后就跳转到那一集的播放界面。我们的第一步是获取每一个播放界面的链接,然后储存到一个列表里面。

首先我们要把这整一个element界面的所有代码全部用程序扒拉下来,然后再慢慢分析处理。这里用requests库来发送请求,获取所有的代码。

seach_url=""#当前页面的网址
server=""#首页的网址
r=requests.post(url=seach_url)
r.encoding="utf-8"

乍一看,会发现element界面实在是让人眼花缭乱,里面面的代码一层包一层完全看不出个所以然,但是如果我们把鼠标移动到网页上的每一个选项或者图片之类的上面,element界面中会自动显示标记出我们鼠标指向的界面对应的代码,右键一下,就可以选定。然后,我们就可以通过人为观察,找到我们想要的播放链接。当然,我们不可能手动把所有播放链接都复制下来。如果仔细观察,会发现每个部分都会有“div”,“class”之类的标签,而且这些标签都是跟变量名一样独一无二的。所以我们就可以根据这些线索按图索骥,用程序寻找我们想要的内容对应的标签属性,然后定位我们想要的内容。

在这个网页里面,所有的视频播放界面的链接都藏在这里:简单python网络爬虫批量下载视频

 所以,我们可以通过定位div标签,id="vlink_1",class="videourl clearfix"来定位我们要的链接。

首先用beautifulsoup对扒拉到的资源进行一个处理,然后可以用相关方法很快捷的对数据进行查找分析。

search_html=BeautifulSoup(r.text,"lxml")#beautifulsoup是一个可以从HTML文件中提取数据的库,lxml用于解析HTML语言。
search_spans=search_html.find("div",id="vlink_1")

然后要做进一步的处理。仔细观察网页的element界面,会发现链接前面还有一个“a”的标签,然后我们利用这个特点进行进一步提取。

urls=search_spans.find_all("a")

现在我们离获取到视频链接只有一步之遥:

url_list=[]
for url in urls:
    url_list.append(server+url.get("href"))

 然后我们就获取了所有的视频播放界面的链接,接下来对每一个播放链接进行操作提取视频就可以了。

接下来,我们打开一个链接,进一步查找线索。然后这时我们会惊讶的发现,视频源文件找不到啊?按理说视频文件应该以mp4之类的格式保存,但事实上,根本没有这样的文件。那么我们的爬虫大计就要在此付诸东流了吗?并不会。经过我的了解,在这个网站里面(同时应该也对很多网站适用),视频以一个m3u8的格式的文件储存链接,文件里面是很多个ts视频文件的地址,每个ts文件都是视频的一小段。然后在读取这个m3u8文件之后,就按照上面的顺序进行视频播放,一个接一个就有了完整的视频。我们现在来实际验证一下这个说法。

现在我们打开视频开始播放,在图中鼠标所指的地方有一个network选项:

简单python网络爬虫批量下载视频

点开它,会发现有很多.ts文件,而且其中一个的数据正在快速的变化:简单python网络爬虫批量下载视频 点击其中的一个,跳转到相应链接,会发现指向的是一小段视频,正是节目的一个片段,所以这个说法就得到了证明。

那么第二步,我们根据获得的视频播放界面,来获取m3u8文件,并储存。

import re 
def getm3u8(url):
    r=requests.post(url)
    r.encoding="utf-8"
    search_html=BeautifulSoup(r.text,"lxml")
    vidlink=search_html.find("div",{"class":"player mb"}) 
    vidlink=vidlink.find("script") 
    text="".join(list(vidlink))
    text=re.split(string=text,pattern="\"")
    pat="https://jisu.+index.m3u8"
    for t in text:
        matchurl=re.match(string=t,pattern=pat)
        if matchurl !=None:
            return matchurl.group(0)

m3u8list=[]
for u in url_list:
    m3u8list.append(getm3u8(u))
print(m3u8list)

 这个地方我的实现方式比较笨拙,先从视频播放界面爬取HTML代码然后用beautifulsoup进行处理,然后观察网页,用Ctrl+F查找m3u8文件:

 然后不管我如何尝试,我都不能再用相同的方法在script下面再进行提取了,于是我想到一个方法:我把提取到的数据转换成字符串,然后用正则表达式进行查找,查找目标为以“https://jisu”开头,“index.m3u8”结尾的链接。最后程序可以成功运行,返回相应的index.m3u8

下一步,我们根据这个链接,用“ffmpy3”包来进行批量下载视频,这个包会自动连续读取ts文件,然后拼接成完整视频。下载完成之后会储存到当前文件夹下面。

import ffmpy3
for i,url in enumerate(m3u8list):
    ffmpy3.FFmpeg(inputs={url: None}, \
    outputs={'第{}集.mp4'.format(i):None}).run()

下载的比较慢,其实也可以采用多线程的方式来加速,不过我没有加这个功能。 

总代码如下:(带有网址的字符串由于审核要求我全都去掉了,用的时候自己补上就好)文章来源地址https://www.toymoban.com/news/detail-400596.html

import requests
from bs4 import BeautifulSoup 
seach_url=""
server=""
r=requests.post(url=seach_url)
r.encoding="utf-8"
search_html=BeautifulSoup(r.text,"lxml")
print(type(search_html))
search_spans=search_html.find("div",id="vlink_1")
urls=search_spans.find_all("a")
url_list=[]
for url in urls:
    url_list.append(server+url.get("href"))
print(url_list)
import ffmpy3
import re 
def getm3u8(url):
    r=requests.post(url)
    r.encoding="utf-8"
    search_html=BeautifulSoup(r.text,"lxml")
    vidlink=search_html.find("div",{"class":"player mb"}) 
    vidlink=vidlink.find("script") 
    text="".join(list(vidlink))
    text=re.split(string=text,pattern="\"")
    pat=""
    for t in text:
        matchurl=re.match(string=t,pattern=pat)
        if matchurl !=None:
            return matchurl.group(0)
        
m3u8list=[]
for u in url_list:
    m3u8list.append(getm3u8(u))
print(m3u8list)
import ffmpy3
for i,url in enumerate(m3u8list):
    ffmpy3.FFmpeg(inputs={url: None}, \
    outputs={'第{}集.mp4'.format(i):None}).run()

到了这里,关于简单python网络爬虫批量下载视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 短信视频提取批量工具,免COOKIE,博主视频下载抓取,爬虫

    痛点:关于看了好多市面的软件,必须要先登录自己的Dy号才能 然后找到自己的COOKIE 放入软件才可以继续搜索,并且无法避免长时间使用 会导致无法正常显示页面的问题。 有没有一种方法 直接可以使用软件,不用设置的COOKIE的方法呢 今日我们搞出新版本 通过云端算力获取

    2024年04月25日
    浏览(45)
  • Python爬虫系列(二)——Python爬虫批量下载百度图片

    1. 前言 先贴代码 如果要使用上述程序的话,需要修改两个地方 : self.directory 这是本地存储地址,修改为自己电脑的地址,另外,**{}**不要删 spider.json_count = 10 这是下载的图像组数,一组有30张图像,10组就是三百张,根据需求下载 也可以去gitee仓库直接下载程序。 关于 py

    2023年04月08日
    浏览(52)
  • Python爬虫实战-批量爬取下载网易云音乐

    大家好,我是python222小锋老师。前段时间卷了一套  Python3零基础7天入门实战 https://blog.csdn.net/caoli201314/article/details/132882813 1小时掌握Python操作Mysql数据库之pymysql模块技术 https://blog.csdn.net/caoli201314/article/details/133199207 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、se

    2024年02月05日
    浏览(82)
  • 【Python】批量下载素材酷视频资源

    做视频精彩需要用到梗图视频等,但是素材酷上面的视频没有搜索功能,每次用起来还要去下载也很麻烦,下载只能一个一个下载也很麻烦,下要搞一个能够批量下载的功能,然后把下载的资源全部放进万兴喵影编辑器的云空间,这样就可以做到随做随查随用了。 源码在文章

    2024年02月05日
    浏览(40)
  • Python批量爬虫下载文件——把Excel中的超链接快速变成网址

    本文的背景是:大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。虽然可以手动一个一个点击下载,但是这样太费人力和时间了。我想起了之前的爬虫经验,给老师分析了一下可行性,就动手实践了。    没想到刚开始就遇到了困难,Excel中的

    2024年02月12日
    浏览(36)
  • 【Python网络爬虫】企查查高级搜索及批量查询接口爬虫

    写在前面: 本文所介绍的企查查爬虫代码需要用到cookie,且cookie所对应的账号需要为vip或以上等级具有高级搜索和批量查询的功能,无此功能的账号暂不支持; 本文所介绍的是在其他人分析了前端headers哈希加密后的基础上的进一步补充和完善,并会提供完整的请求代码;

    2024年02月03日
    浏览(42)
  • Python爬虫实战(六)——使用代理IP批量下载高清小姐姐图片(附上完整源码)

    本次爬取的目标是某网站4K高清小姐姐图片: 实现批量下载指定的图片,存放到指定文件夹中: Python:3.10 编辑器:PyCharm 第三方模块,自行安装: 爬虫使用代理IP的好处有以下几点: 轮换IP地址 :使用代理IP可以轮换IP地址,降低被封禁的风险,从而保持爬取的连续性

    2024年02月07日
    浏览(101)
  • Python批量下载ts视频文件,并用ffmpeg合并

    目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8,并做相应处理 2.下载ts文件 三、ffmpeg合并ts文件 ts文件,ts即\\\"Transport Stream\\\"的缩写,特点就是要求从视频流的任一片段开始都是可以独立解码的,非常适合网络视频播放。 打开网址:https://www.kan35.com/play/210314-3-1.html,要怎

    2024年01月20日
    浏览(59)
  • Python 爬虫之下载视频(一)

    今天写个从 好K视频 平台爬取正在播放的视频,并下载保存到本地。 注意:建议大家先看看我之前的比较简单的基础教程文章,要不可能看起来会有点费劲哦。 通过用户输入某个视频的地址,然后程序会根据这个地址,自动获取视频的标题和下载视频,并将标题命名为视频

    2024年02月04日
    浏览(40)
  • Python 爬虫之下载视频(四)

    这篇用来记录一下如何爬取这个平台的视频,比如一些Python的教程小视频(一个视频四五分钟的那种的),效果还是不错的。 举例,如下图所示: 打开一个正在播放的网页页面,获取视频标题和下载链接,在本地保存成mp4格式的视频文件。 获取视频下载链接,电脑网页检查

    2024年01月22日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包