本帖最后由 神一样了 于 2019-11-16 15:47 编辑

无聊写了个爬虫下载小视频

不知道为什么播放起来有点卡,效果不太理想

发出来希望大家认真学习,解决问题

用到协程增加并发,可以一起研究怎么提高下载速度

依赖requests和gevent库

pip直接安装

import requests

import re

import os

import gevent

from gevent import monkey,pool

gevent.monkey.patch_all()

url="http://www.91mmd.xyz/play?type=ckplayer&linkId=2281571"

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36","connection":"close"}

r=requests.get(url,headers=headers)

m3u8_url=[i for i in re.findall("http.*?index\.m3u8", r.text) if "hls" not in i][0]

r=requests.get(m3u8_url,headers=headers)

video_index=re.sub("index.m3u8",r.text.split("\n")[-1],m3u8_url)

r=requests.get(video_index)

ts_list=[]

for index,ts in enumerate(re.findall('(\w*?\.ts)', r.text)):

ts_list.append((str(index).zfill(5),video_index.replace("index.m3u8", ts)))

a=len(ts_list)

def save_video(ts):

try:

global a

file_name=ts[0]

root = os.getcwd()

if not os.path.exists(root+"/"+file_name):

r = requests.get(url=ts[1], headers=headers,timeout=10)

with open(file_name+".ts", "wb")as f:

f.write(r.content)

a=a-1

print("剩余小视频",a)

except:

print(file_name+" save faild")

def rename(name="爽一下"):

path=os.getcwd()

os.system(f"copy /b *.ts new.tmp")

os.rename("new.tmp", f"{name}.mp4")

os.system('del /Q *.ts')

os.system("exit")

if __name__=="__main__":

pool = gevent.pool.Pool(30)

threads = []

for i in ts_list:

threads.append(pool.spawn(save_video,i))

gevent.joinall(threads)

name=input("重命名:")

if name:

rename(name)

else:

rename()

捕获.PNG (16.48 KB, 下载次数: 0)

2019-11-16 03:33 上传

运行直接IDE或cmd 里python xxx.py

默认名称爽一下

按照建议用ffmpeg来合并视频,果然不卡了,还能快进,开心

改了下合并函数

def rename(name="爽一下"):

*[·-·]:基本就是遍历文件夹里的的ts写到list.txt,把list.txt里的ts合并成MP4,然后删除ts 、list.txt

os.system("(for %a in (*.ts) do @echo file '%a') > list.txt")

os.system(f"ffmpeg -f concat -safe 0 -i list.txt -c copy {name}.mp4")

os.system('del /Q *.ts')

os.system('del /Q list.txt')

os.system("exit")

欢迎大家分享些视频网站来练习

python下载包突然卡住_【python】python下载视频为什么会卡?相关推荐

  1. python 导入包的路径_关于Python包导入的知识点你知道吗?

    使用 from module import * 默认情况下会导入 module 里的所有变量,若你只想从模块中导入其中几个变量,可以在 module 中使用 __all__ 来控制想要被其他模块导入的 ...

  2. python数据包的作用_使用Python将登录数据包发送到Minecraft服务器不起作用

    我在Python中有以下脚本 . 它的作用是尝试连接到MineCraft服务器,首先发送'handshake',然后发送登录请求 . 协议规格可以在这里找到:http://wiki.vg/Protoc ...

  3. python3.7扩展库是什么_Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包。_学小易找答案...

    [填空题]Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包. [判断题]Directions: The ...

  4. 飞秋下载2010正式版_飞秋下载

    飞秋(FeiQ) V2_FreeEIM4 简体中文绿色正式版 -聊天工具-绿色下载吧 绿_FreeEIM_FreeEIM_FreeEIM 飞秋(FeiQ) V2_FreeEIM4 简体中文绿色正式版 ...

  5. python调用jar包的模块_使用 Python 的 JPype 模块调用 Jar 包

    背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接口时需要依赖Python:而大多数公司的扩展工具包使 ...

  6. python调用默认播放器_用Python批量下载MOOC资源

    简介 这是我编写的一个Python脚本,用来批量下载一门MOOC的资源,包括视频.PDF和课程目录. 你是否也曾上MOOC学习过?有没有和我一样遇到这些情况:在线看MOOC视频消耗流量好多,或者浏览器 ...

  7. python six模块详解_对python中的six.moves模块的下载函数urlretrieve详解

    实验环境:windows 7,anaconda 3(python 3.5),tensorflow(gpu/cpu) 函数介绍:所用函数为six.moves下的urllib中的函数,调用如下urllib ...

  8. python基础知心得总结_【python】基础学习心得总结(一)

    本文将简单阐述一些基本的python知识点,大多是本人在学习过程中的心得体会.简单常用的编程概念和思想将不再描述.若有理解错误,还望指正. 一.python运行,调试 python和相关软件可以在官网 ...

  9. python word2vector 词 财务报告 指数_使用Python可视化Word2vec的结果

    作者|Mate Pocs 编译|VK 来源|Towards Data Science Word2vec绝对是我在自然语言处理研究中遇到的最有趣的概念.想象一下,有一种算法可以成功地模拟理解单词的含义及 ...

最新文章

  1. (C++)1036 跟奥巴马一起编程
  2. Pytorch学习 - Task5 PyTorch卷积层原理和使用
  3. 想避免宕机,数据中心运营商还要不断演练实践
  4. RT-Thread uart串口设备驱动代码结构剖析
  5. laydate 时间控件去掉秒以及解决在移动端不能滑动的问题
  6. hadoop fs 基本命令
  7. sap中查询字段长度_SAP会计科目编码的层级说明
  8. linux显示3个字符,Linux驱动学习笔记(3)字符设备驱动
  9. java与tomcat,Centos上安装配置java和tomcat
  10. python基础:集合(set)
  11. 案例上手 Python 数据可视化
  12. 数字图像处理(8):实现FFT快速算法(C语言)
  13. CentOS 识别NTFS格式U盘
  14. ChatGPT、文心一言、New Bing到底哪个更AI?
  15. 2021-2022学年广州市南武中学七年级第一学期期中考试英语试题
  16. 3.7 Feature envy(依恋情结)
  17. 根本解决Python2中unicode编码问题
  18. 成都七中高考成绩2021年查询,2021年成都高考各高中成绩及本科升学率数据排名及分析...
  19. OrCAD Allegro元器件MYsql数据库管理 教程二
  20. Delphi中关于DBGrid的DrawDataCell和DrawColumnCell的触发条件

热门文章

  1. CoreAnimation汇总
  2. java 整数存储为2进制补码形式
  3. abstract class和interface有什么区别
  4. 自考--网络经济与企业管理--选择易考题
  5. Python爬虫_HTTP标准
  6. javascript中为某个对象(控件)绑定事件的几种方法
  7. JavaScript算法(实例六)输出日期 / 数组合并 / 小球下落--反弹运动
  8. Angular Extends
  9. 7-130 古风排版 (20 分)
  10. 多路平衡归并和败者树