一、背景

视频下载的套路基本同图片下载一样,甚至更简单。

本文通过代码实现下载电视剧《赘婿》:https://www.okzyw.net/?m=vod-detail-id-71448.html

思路:搜索---->解析---->下载。

1.搜索

  • F12检查元素,打开网络选项卡,搜索《赘婿》,可以发现向服务器POST了关键词‘赘婿’

  • 继续查看搜索结果,搜索结果保存在html的赘婿更新至14集中
  • 编写get_url()获取电视剧的url
import requests
from bs4 import BeautifulSoupsearch_key='赘婿'
search_url='https://www.okzyw.net/index.php'
search_params={'m':'vod-search'
}
search_headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68','referer':'https://www.okzyw.net/','origin':'https://www.okzyw.net'
}
search_data={'wd': search_key,'submit': 'search'
}req=requests.post(url=search_url,params=search_params,headers=search_headers,data=search_data)
req.encoding='utf-8'
server='https://www.okzyw.net'
search_html=BeautifulSoup(req.text,'lxml')
search_spans=search_html.find_all('span',class_='xing_vb4')for span in search_spans:name=span.a.stringurl=server+span.a.get('href')    print(name,':',url)

2.解析

  • 解析搜索结果,获取每集的下载链接。

url:https://www.okzyw.net/?m=vod-detail-id-71448.html

  • 可以发现有两种下载格式,我们已下载m3u8为例。

  • 可以发现,下载链接都存放在

    的input标签中,下面提取所有下载链接

  • 代码如下:
import requests
from bs4 import BeautifulSoupurl = 'https://www.okzyw.net/?m=vod-detail-id-71448.html'
req = requests.get(url)
bs = BeautifulSoup(req.text, 'lxml')
bs_div = bs.find('div', id="2")
bs_inputs = bs_div.find_all('input')
num = 1
for each in bs_inputs:if 'm3u8' in each.get('value'):url = each.get('value')print(num, ':', url)num += 1

3.下载

打开网络抓包,容易发现视频都是以ts分段视频传输的,python中的ffmpy3,及python中的FFmpeg可以处理,该模块的功能包括视频采集、视频格式转换、视频抓图、给视频加水印等。FFmpeg相关教程url

import requests
from bs4 import BeautifulSoup
import os
import ffmpy3
from multiprocessing.dummy import Pool as ThreadPoolsearch_key='赘婿'
search_url='https://www.okzyw.net/index.php'search_params={'m':'vod-search'
}
search_headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68','referer':'https://www.okzyw.net/','origin':'https://www.okzyw.net'
}
search_data={'wd': search_key,'submit': 'search'
}req=requests.post(url=search_url,params=search_params,headers=search_headers,data=search_data)
req.encoding='utf-8'
server='https://www.okzyw.net'
search_html=BeautifulSoup(req.text,'lxml')
search_spans=search_html.find_all('span',class_='xing_vb4')for span in search_spans:name=span.a.stringtv_url=server+span.a.get('href')print(name)print(tv_url)video_dir=nameif video_dir not in os.listdir(r'D:\ProgramData\Python'):os.mkdir(name)#获取每集电视的下载地址req = requests.get(tv_url)bs = BeautifulSoup(req.text, 'lxml')bs_div = bs.find('div', id="2")bs_inputs = bs_div.find_all('input')num = 1search_res={}for each in bs_inputs:if 'm3u8' in each.get('value'):ep_url = each.get('value')if ep_url not in search_res.keys():search_res[ep_url]=numprint(num, ':', ep_url)num += 1#开始下载def download_video(ep_url):num=search_res[ep_url]name=os.path.join(video_dir,'第{0}集.mp4'.format(num))ffmpy3.FFmpeg(inputs={ep_url: None}, outputs={name:None}).run()# 开10个线程池pool = ThreadPool(10)results = pool.map(download_video, search_res.keys())pool.close()pool.join()

四-python爬虫学习--下载电视剧相关推荐

  1. python爬虫学习之电视剧弹幕的抓取

    近期<你是我的荣耀>这部剧正在热播中,在首播当天收视率就上亿了,足以见得观众们对这部剧的一个期待程度.在连放了八集之后,这部剧目前也是好评满满,不少人都被杨洋和迪丽热巴的颜值所吸引了.小编 ...

  2. Python爬虫学习手册

    like:128-Python 爬取落网音乐 like:127-[图文详解]python爬虫实战--5分钟做个图片自动下载器 like:97-用Python写一个简单的微博爬虫 like:87-爬虫抓 ...

  3. python爬虫学习 - 查看显卡价格

    python爬虫学习 - 查看显卡价格 这是一个简单的爬虫项目,用于从中关村网站上爬取显卡报价数据,后续可以考虑爬取相关的参数信息让数据更立体.数据的保存使用的是json,以python为主要开发语言 ...

  4. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  5. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  6. Python 爬虫学习 系列教程

    Python爬虫 --- 中高级爬虫学习路线 :https://www.cnblogs.com/Eeyhan/p/14148832.html 看不清图时,可以把图片保存到本地在打开查看... Pyth ...

  7. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 铁憨憨的Python 爬虫学习 Python_Learn

    通过网课和万能的B站学习 Python 和爬虫(本文基本是对视频内程序和内容的笔记内容) B站 Python 爬虫学习链接 Python 学习网络爬虫主要分3个大的版块:明确目标,抓取,分析,存储 明 ...

  9. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

最新文章

  1. 使用ASP.NET MVC 2编程时遇到的两个小问题
  2. 汉语分词工具的研发-----
  3. android之修改CheckBox左侧图标样式
  4. iBiology |除了B站,这还有个专业的生科科普网站
  5. iPhone 13 Pro“终极”渲染图曝光:后置镜头模组将有大幅升级
  6. 130. 被围绕的区域
  7. 拓端tecdat|R语言ARIMA集成模型预测时间序列分析
  8. 德语翻译器在线翻译中文-德语翻译器支持各大语言翻译
  9. c++ 二次开发 良田高拍仪_高拍仪进行二次开发要求
  10. 关于快速幂与快速积取模实现的尝试
  11. Python初级入门精讲-王大鹏-专题视频课程
  12. 区块链技术与应用-----区块链概念
  13. Chrome浏览器手动调节模拟网速
  14. python之路--生成器
  15. 不同坐标系下角速度_轨道、重力场与坐标系的混乱关系
  16. 智云通CRM:CRM数据库在经营客户中有什么作用?
  17. 从libc-2.27.so[7ff3735fd000+1e7000]崩溃回溯程序段错误segfault
  18. 如何改变讨好型人格?
  19. java异常重要吗_Java 异常处理的重要认识
  20. vue 导出excel文件 利用 excelJs插件

热门文章

  1. 云原生社区 meetup 第四期广州站报名中
  2. 220V接LED指示灯电阻需要多大
  3. CentOS7-命令-创建用户(useradd)
  4. python 多行注释的使用_Pyhton中单行和多行注释的使用方法及规范
  5. 【方案开发】血压计方案压力传感器SIC160
  6. 狼人杀玩法理解之(语言家)
  7. java将中文转换为pinyin/繁简互转
  8. 软件测试智能化 优势,陈耿-软件测试的智能化之路-基于模型的测试实践.pdf
  9. 拿来就用的脚本案例(三)
  10. 个税起征点上调至5000,用Python算一算能留下多少私房钱