Python爬取百思不得姐的视频+视频的切割
来源:互联网 发布:vb for循环嵌套if 编辑:程序博客网 时间:2024/04/28 05:44
源码如下:import osimport requestsfrom bs4 import BeautifulSoupimport threadingfrom 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# 解析网页数据获取视频描述和视频下载urldef 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))
阅读全文
0 0
- Python爬取百思不得姐的视频+视频的切割
- Python爬取百思不得姐的视频
- python爬取百思不得姐视频
- 爬取百思不得姐上面的视频
- python爬取百思不得姐视频代码
- 压制/切割real视频的软件
- 视频切割的精确定位问题
- Python 爬虫,爬取”百思不得姐“搞笑视频
- 十五行代码爬取百思不得姐网站数百视频
- Python - 下载视频网站的视频
- 百思不得姐视频爬取
- 终于实现了字符叠加,视频切割,视频放大缩小,视频矩阵切换的verilog代码了
- 用python写网络爬虫-下载百思不得姐视频
- libav 切割视频
- 关键帧切割视频
- ffmpeg实现视频切割
- android切割音视频
- FFMPEG-无损切割视频
- android gridview 选择变色 再点击还原 并支持多选。记录贴 01
- 使用Cookie有序非重复记录已浏览商品的原理以及实现
- 安徽省阜阳市谷歌卫星地图下载(百度网盘离线包下载)
- oracle中的number类型用法及举例
- MySQL从无关联的两个或多个表中查询数据,列转行等
- Python爬取百思不得姐的视频+视频的切割
- module_param的使用
- Leetcode 746. Min Cost Climbing Stairs
- [算法分析与设计] leetcode 每周一题: 050. Pow(x, n)
- java安全管理器
- vuejs如何从后端请求数据
- 数据结构实验之排序一:一趟快排
- 数据结构_复习2
- git警告warning: CRLF will be replaced by LF in iris/js/list.js.