python下载电影

今天在某个网站上看到了自己想看的电影。想下载下来,但是网站没有提供下载功能。这可咋办嘞?身为码农的我敲了敲自己的脑袋。看来还得自己动手了。

0x01 准备工具

  • chrome浏览器 (调试网页用的)
  • notepad++(写代码用的)
  • python2.6 (运行我们写的代码用的)

0x02 网页分析

  1. 在chrome输入播放电影的网址
  2. 在打开的网页上按一下键盘上的F12键,打开 开发者工具
  3. 开发者工具中的标签页切换到Network标签(图1中箭头1所指)
  4. Network标签中 选中 XHR 过滤请求的链接(图1中箭头2所指)
  5. 这个文件2rES0ai2.m3u8,扩展名是m3u8就是我们需要的(图1中箭头3所指)

如图所示:

图1

0x03 分析m3u8格式文件

m3u8 文件实质是一个播放列表,其可能是一个媒体播放列表,或者是一个主列表.但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。从网站搜索了一下看,吧啦吧啦一大堆格式介绍。对比一下请求的数据 每行开头是 # 号的都暂时不用管。获取里面的请求链接,类似xxx.ts样子的。

0x04 编写下载逻辑

#!/usr/bin/python
#coding=utf-8
import urllib2
file = open("2rES0ai2.m3u8")
code = open("2rES0ai2.ts", "wb+")
while True:
line = file.readline()
if not line:
break
if line[0] == '#':
continue
print line
f = urllib2.urlopen("**********"+line)
data = f.read()
code.write(data)
file.close()
code.close()

  1. 循环读取2rES0ai2.m3u8文件中的每一行
  2. 如果是空行或者第一个字符是#号就不处理
  3. 请求得到的***.ts的链接,保存下载数据到同一个文件里面。有的时候请求链接不完整,只有一部分路径,所以我们补充完整。(我的那个链接不给你看,用*号代替)

0x05 运行

图2

  1. 打开window的控制台窗口
  2. 输入命令执行,格式:python 你的脚本名字。(输入你的python路径)
  3. 等待程序吧啦吧啦执行完毕。
  4. 直接双击下载完成的文件,window会自动播放下载好的电影

到这里基本上完成啦,但是我们的程序还有好多不足。比如下载的慢、链接请求失败怎么办等等等等的缺陷。这个需要大家自己去解决啦!

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();