今天花了一下午时间来做这东西,之前没有自己写过代码,50几行的代码还是查了很多东西啊,果然学起来和自己动起手来完全是两码事。

方案:requests库+正则表达式提取视频下载链接+urlretrieve下载到本地

import requests
from urllib.request import urlretrieve
import re def geturl(url):
requ = requests.get(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'})
req = requ.text
regexname = re.compile(r'_shd\.mp4\?(.*?)</a>')
regexgetname=re.compile(r'cb550>(.*)')
regexmp4 = re.compile(r'href=(.*_shd?.mp4)')
prename = regexname.findall(req)
name=[]
list=[]
for i in prename:
name += regexgetname.findall(i)
load = regexmp4.findall(req)
for i in range(len(name)):
list +=(name[i],load[i])
print(list)
return list def download(list):
filename= r'C:\Users\47461\Desktop\DownloadVedio\\'
for i in range(0,len(list),2):
name=list[i]
url=list[i+1]
local = filename+name+'.mp4'
try:
print("\""+name+"\""+"已经开始下载")
urlretrieve(url,local,reporthook=callback)
print("\""+name+"\""+"已经下载完成")
except:
pass def callback(count,blockSize,totalSize): #下载进度回调函数,count表示已下载的个数,blocksize为已经下载的大小,totalsize为总大小
if not count:
print("开始下载")
if totalSize<0:
print("要下载的文件大小为0")
else:
per = 100*count*blockSize/totalSize
if per>100:
per=100
print("-----当前已下载:"+'%.2f%%' % per + "-----")
if per==100:
return True list = geturl(r'http://www.feemic.cn/mooc/icourse163/1002161029?type=hot')
if list:
print("开始下载")
download(list)
print("下载完成")

主要正则表达式不是特别熟练花了点时间

之后可以改成多线程?反正还可以从很多地方改进啊。

最新文章

  1. 心无旁骛,向死而生:WGDC2016给创企上的一堂课
  2. struts2 国际化
  3. cocos2d-x 中 TTF 字体文件的位置
  4. iPhone(iOS设备) 无法更新或恢复时, 如何进入恢复模式
  5. ffmpeg基础与编译_在VS2008下调试output_example.c(详细步骤)
  6. ZOJ 3633 Alice&#39;s present 倍增 区间查询最大值
  7. javascript进击(三)简介
  8. hdoj 4006 The kth great number【优先队列】
  9. seajs 学习笔记
  10. js实现页面时钟
  11. 康复计划#1 再探后缀自动机&amp;后缀树
  12. The summary of Interview
  13. Vue 学习笔记之快速入门篇
  14. docker运行php网站程序
  15. Sony笔记本
  16. Java基础学习——多线程之线程池
  17. HAProxy的独门武器:ebtree
  18. jquery-修改、回退结果集
  19. 学习笔记之windows 网络编程
  20. 使用GoogleCode作SVN服务器的一些问题及解决办法

热门文章

  1. 王艳 201771010127《面向对象程序设计(java)》第十三周学习总结
  2. 201771010128王玉兰《面向对象程序设计(Java)》课程学习总结
  3. 苏浪浪 201771010120《面向对象程序设计(java)》第六章学习总结
  4. 重学 Java 设计模式:实战原型模式
  5. Java的四种权限修饰符
  6. Spring/SpringBoot常用注解总结
  7. 03 . Python入门之运算符
  8. ie时间格式NAN-NAN-NAN
  9. HTML静态页面项目:英雄联盟官网网站 的实现
  10. Shell 脚本(四) ”read 读取控制台输入” 与 “函数”