前言
某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~
当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。
于是,我决定开一个专题,便称之为kimol君的无聊小发明。
妙…啊~~~
众所周知,视频是一个学习新姿势知识的良好媒介。那么,如何利用爬虫更加方便快捷地下载视频呢?本文将从数据包分析到代码实现来进行一个相对完整的讲解。
一、爬虫分析
本次选取的目标视频网站为某度旗下的好看视频:
https://haokan.baidu.com
1.视频搜索
进入主页后,我们可以看到一个搜索框历历在目:
当我们点击搜索按钮之后,会出现与关键字(ps.这里要考,大家仔细看"_blank" href="https://www.jb51.net/softs/107060.html">Fiddler或者Burpsuit等),当然也可以选择浏览器自带的调试工具(在浏览器中按F12即可打开)。
在这里我选择了后者,打开F12调试工具,选择网络:
在点击搜索按钮之后我们可以看到相应的网络请求出现在下面的工具框中:
通过简单的查找之后我们可以很容易地发现对应的搜索请求(红框标出部分),其对应的地址为:
https://haokan.baidu.com/videoui/page/search"htmlcode">import requests res = requests.get('https://haokan.baidu.com/videoui/page/search"text-align: center">很显然,这里返回的是一个HTML格式的数据,我们只需要通过re库或是bs4库等将我们需要的数据提取出来即可。至此,关于视频搜索的分析基本算是完成了。
然而!细心的小伙伴会发现,我们现在可以获得搜索结果,但是没办法选择页面呀。对嚯~那咋办呀?同样,我们继续抓包分析不就可以了嘛~ 我倒要看看你是怎么翻页的。果然,下滑鼠标之后我们得到了新的请求:
其请求地址变为了:
https://haokan.baidu.com/videoui/page/search"htmlcode">import requests page = 1 keyword = 'xxxxx' # xxxxx为搜索的关键字 url = 'https://haokan.baidu.com/videoui/page/search"text-align: center">右键视频播放页面查看源码(或者通过右键视频检查元素也可),我们可以找到视频播放的src,其对应的正则表达式为:
p = '<video class="video" src=(.*"htmlcode">def get_videoUrl(vid): ''' 提取视频信息中的视频源地址 ''' res = requests.get('https://haokan.baidu.com/v"video" src=(.*"htmlcode">def download_video(vid): ''' 下载视频文件 ''' savePath = 'xxxxx.mp4' # 定义存储的文件名 videoUrl = get_videoUrl(vid) # 获取视频下载地址 res = requests.get(videoUrl) with open(savePath,'wb') as f: f.write(res.content)至此,我们已经可以根据关键字搜索相关的视频,并且可以把视频下载到本地了。这也意味着:关于本次视频下载爬虫的介绍也就结束了,剩下的就是根据自己实际需求对代码进行包装即可。
二、我的代码
这里提供一个我自己的代码,仅供参考:
# ============================================================================= # 好看视频_v0.1 # ============================================================================= import re import os import time import queue import requests import threading import pandas as pd class Haokan: def __init__(self): self.url = 'https://haokan.baidu.com/videoui/page/search"第%d页"爬取完成!'%(p+1)) self.result = pd.DataFrame(self.result) self.result.to_excel('%s.xlsx'%keywords,index=False) # 定义队列,用于多线程下载视频 self.url_queue = queue.Queue() for vid,url in zip(self.result['vid'],self.result['url']): self.url_queue.put((vid,url)) def get_videoUrl(self,url): ''' 提取视频信息中的视频源地址 ''' res = requests.get(url,headers=self.headers) html = res.text videoUrl = re.findall('<video class="video" src=(.*"%s.mp4"下载失败!'%vid) continue t_e = time.time() print('"%s.mp4"下载完成!(用时%.2fs)'%(vid,t_e-t_s)) if __name__ == "__main__": keywords = '多啦A梦' page = 1 # 爬取页数,每页20条信息 t_s = time.time() haokan = Haokan() haokan.get_info(keywords,page) N_thread = 3 # 线程数 thread_list = [] for i in range(N_thread): thread_list.append(threading.Thread(target=haokan.run)) for t in thread_list: t.start() for t in thread_list: t.join() t_e = time.time() print('任务完成!(用时%.2fs)'%(t_e-t_s))运行代码,可以看到小频频全都来到我的碗里了"text-align: center">
写在最后
今天分享的视频下载算是最基础的了,它宛如一位慈祥的老奶奶,慈眉善目,面带笑容。它没有各种繁琐的反爬机制(甚至连headers都不进行验证),而且数据返回的格式也是极其友好的,就连视频格式也显得如此的温柔。
我相信在“她”的陪伴下,我们可以走好学习爬虫的第一步。纵使日后我们还将面临IP验证、参数验证、验证码、行为检测、瑞数系统等等诸多反爬考验,也许还需应对视频格式转换等挑战。
但是,请记住kimol君将始终陪伴在你们身边~最后,感谢各位大大的耐心阅读,咋们下次再会~
以上就是用python制作个视频下载器的详细内容,更多关于python 制作视频下载器的资料请关注其它相关文章!
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]