python获取某视频网站视频
还是老生常谈的操作
import requests
import os
from bs4 import BeautifulSoup
from urllib.parse import urljoin
html = requests.get('http://www.332dy.com/pu/37192-0-0.html')
soup = BeautifulSoup(html.text,'lxml')
lists = soup.select('.stui-content__playlist.sort-list.column8.clearfix li a')
for list in lists:
print(list['href'])
返回
/pu/37192-0-0.html
/pu/37192-0-1.html
/pu/37192-0-2.html
/pu/37192-0-3.html
/pu/37192-0-4.html
/pu/37192-0-5.html
/pu/37192-1-0.html
/pu/37192-1-1.html
/pu/37192-1-2.html
/pu/37192-1-3.html
/pu/37192-1-4.html
/pu/37192-1-5.html
拼接一下
import requests
import os
from bs4 import BeautifulSoup
from urllib.parse import urljoin
base_url = 'http://www.332dy.com/'
html = requests.get('http://www.332dy.com/pu/37192-0-0.html')
soup = BeautifulSoup(html.text,'lxml')
lists = soup.select('.stui-content__playlist.sort-list.column8.clearfix li a')
for list in lists:
innerurl = urljoin(base_url,list['href'])
print(innerurl)
然后我们就要下载这个视频,来抓下包
可以看到是个ts流,这个就是分段下载,一般ts流都有个m3u8
我们看头部可以知道有个sign
Request URL: https://shuixian.nihaozuida.com/20200313/1391_06cf517b/index.m3u8?sign=01799e5e52bc047a26880b8c15e42313
来全局搜索一下sign
可以看到这个sign是从一个script脚本里面取的,把鼠标移到上面可以看到share我们去源代码全局搜索下share
访问https://shuixian.nihaozuida.com/share/7f53f8c6c730af6aeb52e66eb74d8507可以看到是视频这个应该是
3u8文件,我们就取出var now=使用正则表达式因为script一般不在我们语法里面
re_m3u8 = re.compile('now="(.*?)"',re.I|re.S)
html2 = requests.get(innerurl)
m3u8Result = re_m3u8.findall(html2.text)[0]
print(m3u8Result)
成功获取到了,但是返回的为列表是4集我们获取第一个,所以加上[0]
我们访问一下抓包,可以看到访问了这个文件然后main里面我们访问就是下载的m3u8文件
同样正则获取一下里面的值
re_main = re.compile('main = "(.*?)"',re.I|re.S)
html3 = requests.get(m3u8Result)
mainResult = re_main.findall(html3.text)[0]
print(mainResult)
同样取出要拼接
baseurl = 'https://shuixian.nihaozuida.com/'
resultUrl = urljoin(baseurl,mainResult)
print(resultUrl)
然后我们把这个m3u8文件保存一下
if not os.path.exists('影视'):
os.mkdir('影视')
with open('影视/m3u81.txt','w',encoding='utf-8')as f:
f.write(requests.get(resultUrl).text)
print('m3u8存储完毕')
然后再读取出来
with open('影视/m3u81.txt', 'r', encoding='utf-8')as f:
lines = f.readlines()
for line in lines:
if line.startswith('#'):
continue
print(line)
输出
1024k/hls/index.m3u8
再拼接起来
现在获取到的就是里面很多ts流,同样保存起来
with open('影视/m3u82.txt', 'w', encoding='utf-8')as f:
f.write(requests.get(url).text)
print('m3u8存储完毕')
with open('影视/m3u82.txt', 'r', encoding='utf-8')as f:
lines = f.readlines()
for line in lines:
if line.startswith('#'):
continue
print(line)
输出
但是现在还不能用这个ts我们看一下他本地怎么发包的
Request URL: https://shuixian.nihaozuida.com/20200313/1391_06cf517b/1024k/hls/5b5cebabeb8000002.ts
base = 'https://shuixian.nihaozuida.com/20200313/1391_06cf517b/1024k/hls/'
url = urljoin(base,line.strip().replace('\n',''))
print(url)
然后就是下载这些ts流,最终代码为
import requests
import os
import re
from bs4 import BeautifulSoup
from urllib.parse import urljoin
re_m3u8 = re.compile('now="(.*?)"',re.I|re.S)
re_main = re.compile('main = "(.*?)"',re.I|re.S)
html = requests.get('http://www.332dy.com/dili/37192.html')
soup = BeautifulSoup(html.text,'lxml')
lis = soup.select('ul.stui-content__playlist.sort-list.column8.clearfix li a')
base = 'http://www.332dy.com/'
for li in lis:
innerUrl = urljoin(base,li['href'])
# print(innerUrl)
html2 = requests.get(innerUrl)
m3u8Result = re_m3u8.findall(html2.text)
# print(m3u8Result)
if m3u8Result==[]:
base = 'http://www.332dy.com'
innerUrl = urljoin(base, li['href'])
html2 = requests.get(innerUrl)
m3u8Result = re_m3u8.findall(html2.text)
html3 = requests.get(m3u8Result[0])
mainResult = re_main.findall(html3.text)[0]
baseurl = 'https://shuixian.nihaozuida.com/'
resultUrl = urljoin(baseurl,mainResult)
if not os.path.exists('影视'):
os.mkdir('影视')
with open('影视/m3u81.txt','w',encoding='utf-8')as f:
f.write(requests.get(resultUrl).text)
print('m3u8存储完毕')
with open('影视/m3u81.txt', 'r', encoding='utf-8')as f:
lines = f.readlines()
for line in lines:
if line.startswith('#'):
continue
# print(line)
#https://shuixian.nihaozuida.com/20200313/1391_06cf517b/1024k/hls/index.m3u8
#1024k/hls/index.m3u8
basem3u8 = 'https://shuixian.nihaozuida.com/20200313/1391_06cf517b/'
url = urljoin(basem3u8,line)
break
with open('影视/m3u82.txt', 'w', encoding='utf-8')as f:
f.write(requests.get(url).text)
print('m3u8存储完毕')
with open('影视/m3u82.txt', 'r', encoding='utf-8')as f:
lines = f.readlines()
for line in lines:
if line.startswith('#'):
continue
# print(line)
base = 'https://shuixian.nihaozuida.com/20200313/1391_06cf517b/1024k/hls/'
ts_url = urljoin(base,line.strip().replace('\n',''))
# print(url)
with open('影视/1.mp4','ab')as f:
f.write(requests.get(ts_url).content)
效果
python获取某视频网站视频的更多相关文章
- 使用you-get下载视频网站视频或其他
使用you-get下载视频网站视频或其他 文/玄魂 目录 使用you-get下载视频网站视频或其他 前言 1.1 下载.安装 依赖 exe安装 pip安装 Antigen安装 Git 克隆源码 Hom ...
- Python获取Origin官网视频
程序说明:最近学习origin,看到官网有入门视频(http://www.originlab.com/index.aspx?go=SUPPORT/VideoTutorials),看着挺多的,就用pyt ...
- 下载B站、秒拍等视频网站视频
需要一个FVD Downloader(插件) 安装过程很简单,会浏览器安装插件的就不多说了!
- python爬虫:爬取网站视频
python爬取百思不得姐网站视频:http://www.budejie.com/video/ 新建一个py文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...
- 转:最简单的视频网站(JavaEE+FFmpeg)
本文记录一个最简单的视频网站系统.此前做过一些基于JavaEE中的 SSH (Strut2 + Spring + Hibernate)的网站系统,但是一直没有做过一个视频网站系统,所以就打算做一个&q ...
- 最简单的视频网站(JavaEE+FFmpeg)
本文记录一个最简单的视频网站系统.此前做过一些基于JavaEE中的SSH (Strut2 + Spring + Hibernate)的网站系统,但是一直没有做过一个视频网站系统,所以就打算做一个&qu ...
- 最简单的基于JavaEE和FFmpeg的视频网站
最简单的视频网站 Simplest Video Website 雷霄骅 Lei Xiaohua leixiaohua1020@126.com 中国传媒大学/数字电视技术 Communication U ...
- Python+Tornado+Tampermonkey 获取某讯等主流视频网站的会员视频解析播放
近期,<哪吒之魔童降世>在各大视频软件可以看了,然而却是一贯的套路,非会员谢绝观看!!!只能从国内那些五花八门的视频网站上找着看了,或者通过之前本人说的 Chrome 的油猴插件,传送门 ...
- python下载各大主流视频网站电影
You-Get 是一个命令行工具, 用来下载各大视频网站的视频, 是我目前知道的命令行下载工具中最好的一个, 之前使用过 youtube-dl, 但是 youtube-dl 吧, 下载好的视频是分段的 ...
随机推荐
- Flutter 状态管理之BLoC
在正式介绍 BLoC之前, 为什么我们需要状态管理.如果你已经对此十分清楚,那么建议直接跳过这一节.如果我们的应用足够简单,Flutter 作为一个声明式框架,你或许只需要将 数据 映射成 视图 就可 ...
- Kubernetes 编写自定义 controller
原文链接:Kubernetes编写自定义controller 来自kubernetes官方github的一张图: 如图所示,图中的组件分为client-go和custom controller两部分: ...
- javacv教程文档手册开发指南汇总篇
本章作为javacv技术栈系列文章汇总 前言 写了不少关于javacv的文章,不敢说精通 ,只能说对javacv很熟悉.虽然偶尔也提交pull request做做贡献,但是javacv包含的库实在太多 ...
- Spring是如何解决循环依赖的
前言 在面试的时候这两年有一个非常高频的关于spring的问题,那就是spring是如何解决循环依赖的.这个问题听着就是轻描淡写的一句话,其实考察的内容还是非常多的,主要还是考察的应聘者有没有研究过s ...
- 为wordpress的分类以及子分类指定固定模版
在wordpress主题开发有多个不同分类页面时,通常使用category-{slug}.php的方式分别为每个分类开发不同的页面模版,slug为该分类的别名,并且无需其他设置仅仅以此命名即可. 但是 ...
- C#显示百度地图API
http://dev.baidu.com/wiki/static/map/API/examples/?v=1.3&2_0#2&0 太原市的经纬度:112.596, 37.884 北京市 ...
- P1306 斐波那契公约数(ksm+结论)
题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? Update:加入了一组数据. 输 ...
- LaTeX分分钟上手【转】
原文地址:<LaTeX新人教程,30分钟从完全陌生到基本入门> 需要说明的几点: 1.文中说用XeTex,但是我的总是失败(出现!undefined control sequence.), ...
- 聊聊redis单线程为什么能做到高性能和io多路复用到底是个什么鬼
1:io多路复用epoll io多路复用简单来说就是一个线程处理多个网络请求 我们知道epoll in 的事件触发是可读了,这个比较好理解,比如一个连接过来,或者一个数据发送过来了,那么in事件就触 ...
- 跟着兄弟连系统学习Linux-【day04】
day04-20200601 p15.链接文件 [ln -s 原文件 连接文件]软连接,所有人都可以操作软连接文件(实际上是取决于原文件的权限),类似于Windows的快捷方式,方便进行管理.软连 ...