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

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

  1. import requests
  2. from urllib.request import urlretrieve
  3. import re
  4. def geturl(url):
  5. 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'})
  6. req = requ.text
  7. regexname = re.compile(r'_shd\.mp4\?(.*?)</a>')
  8. regexgetname=re.compile(r'cb550>(.*)')
  9. regexmp4 = re.compile(r'href=(.*_shd?.mp4)')
  10. prename = regexname.findall(req)
  11. name=[]
  12. list=[]
  13. for i in prename:
  14. name += regexgetname.findall(i)
  15. load = regexmp4.findall(req)
  16. for i in range(len(name)):
  17. list +=(name[i],load[i])
  18. print(list)
  19. return list
  20. def download(list):
  21. filename= r'C:\Users\47461\Desktop\DownloadVedio\\'
  22. for i in range(0,len(list),2):
  23. name=list[i]
  24. url=list[i+1]
  25. local = filename+name+'.mp4'
  26. try:
  27. print("\""+name+"\""+"已经开始下载")
  28. urlretrieve(url,local,reporthook=callback)
  29. print("\""+name+"\""+"已经下载完成")
  30. except:
  31. pass
  32. def callback(count,blockSize,totalSize): #下载进度回调函数,count表示已下载的个数,blocksize为已经下载的大小,totalsize为总大小
  33. if not count:
  34. print("开始下载")
  35. if totalSize<0:
  36. print("要下载的文件大小为0")
  37. else:
  38. per = 100*count*blockSize/totalSize
  39. if per>100:
  40. per=100
  41. print("-----当前已下载:"+'%.2f%%' % per + "-----")
  42. if per==100:
  43. return True
  44. list = geturl(r'http://www.feemic.cn/mooc/icourse163/1002161029?type=hot')
  45. if list:
  46. print("开始下载")
  47. download(list)
  48. print("下载完成")

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

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

2019-02-09 python爬取mooc视频项目初级简单版的更多相关文章

  1. python爬取豆瓣视频信息代码

    目录 一:代码 二:结果如下(部分例子)   这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quote ...

  2. python爬取快手视频 多线程下载

    就是为了兴趣才搞的这个,ok 废话不多说 直接开始. 环境: python 2.7 + win10 工具:fiddler postman 安卓模拟器 首先,打开fiddler,fiddler作为htt ...

  3. python 爬取bilibili 视频弹幕

    # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/09 下午 4:50 # 爬取弹幕 import requests import j ...

  4. python爬取百思不得姐视频

    # _*_ coding:utf-8 _*_ from Tkinter import * from ScrolledText import ScrolledText import urllib #im ...

  5. python 爬取bilibili 视频信息

    抓包时发现子菜单请求数据时一般需要rid,但的确存在一些如游戏->游戏赛事不使用rid,对于这种未进行处理,此外rid一般在主菜单的响应中,但有的如番剧这种,rid在子菜单的url中,此外返回的 ...

  6. python爬取youtube视频 多线程 非中文自动翻译

    声明:我写的所有文章都是发在博客园的,我看到其他复制粘贴过去的 连个出处也不写,直接打上自己的水印...真是没的说了. 前言:前段时间搞了一些爬视频的项目,代码都写好了,这里写文章那就在来重新分析一遍 ...

  7. python爬取网站视频保存到本地

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Woo_home PS:如有需要Python学习资料的小伙伴可以加点 ...

  8. python 爬取头条视频

    知识点总结 1. 利用webdriver 模拟浏览器访问 from selenium import webdriver 2.import requests 3. from bs4 import Bea ...

  9. 2019.02.09 bzoj2560: 串珠子(状压dp+简单容斥)

    传送门 题意简述:nnn个点的带边权无向图,定义一个图的权值是所有边的积,问所有nnn个点都连通的子图的权值之和. 思路: fif_ifi​表示保证集合iii中所有点都连通其余点随意的方案数. gig ...

随机推荐

  1. git rebase 还是 merge的使用场景最通俗的解释

    什么是 rebase? git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点.这个时候才能知道你当前分支于你需要比较的分支之间的差异. 原理很简单:rebase需 ...

  2. Excel中遇到的一些问题——持续更新

    Q1:excel2007表格里的数字在表格关闭后再打开经常会变成日期格式,怎么解决? A1: 1)打开Excel,选中任意单元格,单击鼠标右键,选择设置单元格格式2)在数字自定义类型中,找到类似[$- ...

  3. 【Java】几种典型的内存溢出案例,都在这儿了!

    写在前面 作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑.今天,我们就以Java代码的方式来列举几个典型的内存溢出 ...

  4. day24 面向对象与实例属性

    编程进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定义了一个函数),便实现来代码重用,且代码从无结构走向了机构化, ...

  5. ThreadLocal原理分析

    本文结构 ThreadLocal简介 (简要说明ThreadLocal的作用) ThreadLocal实现原理(说明ThreadLocal的常用方法和原理) ThreadLocalMap的实现 (说明 ...

  6. 问答题:你下班后是选择关电脑?Or,只关闭显示器?

    首百问答的答案:jingmentudou 因为你永远不知道什么时间会被叫醒.开个远程就能避免半夜去公司了. 月尧jade 干这一行的,电脑自按下开机键开始,除了驱动会自动启动外,你需要重新检查各大运行 ...

  7. eatwhatApp开发实战(十二)

    上次我们介绍了跳转activity并且实现传值的功能,今天我们来实现双击返回键退出app的功能,上代码: 这里我们有两种方式去实现点击事件: 第一种方式: /** * 返回键的监听(系统提供的) */ ...

  8. shell日期格式化、加减运算

    #!/bin/bash echo i love you输出:i love you =======================================反引号的作用============== ...

  9. vivo产能问题

    生产手机,第一天量产1台,接下来2天(即第二.三天)每天量产2件,接下来3天(即第四.五.六天)每天量产3件 ... ... 以此类推,请编程计算出第n天总共可以量产的手机数量. public int ...

  10. Burpsuite代理socks流量

    一 设置sock代理 二 设置浏览器代理 三 设置burpsuite代理 四 浏览器访问验证 总结:增加取证难度,隐藏你自己ip,别光着屁股跑了O-O!