怎么办?下载APP吗?作为一个技术人员这点问题我怎么会屈服呢,正好这两天跟大家说Python,那么今天就用Python搞一下吧。
需要下载视频的网页地址:
http://v.163.com/special/opencourse/machinelearning.html
右键查看源代码,发现提供下载的视频格式都是“.mp4”后缀:
网页上提供下载的视频在源代码中都是这种式:href='http://mov.bn.netease.com/mobilev/2011/9/8/V/S7CTIQ98V.mp4'
据此可以写出所要匹配的正则表达式:r=r' href='(http.*\.mp4)' '
接下来的任务就是获取网页源代码,然后在源代码里面寻找所有匹配正则r的字符串。
抓取源代码可以利用urllib里的urlopen()方法:page=urllib.urlopen(url),返回的是一个页面的对象page,通过html=page.read()可以将页面源代码保存到html变量中。
源代码抓下来之后,就要寻找并获取里面所有的:
href='http://mov.bn.netease.com/mobilev/2011/9/8/V/S7CTIQ98V.mp4'
可以通过正则r,以及正则模块re里的findall方法来获取:mp4List=re.findall(re_mp4,html)
findall返回的是列表,列表里的元素就是视频的地址了,比如下面就是一个视频地址: http://mov.bn.netease.com/mobilev/2011/9/8/V/S7CTIQ98V.mp4
视频的地址抓取下来后,利用模块urllib里的urlretrieve()方法通过视频地址将视频下载下来: urllib.urlretrieve(mp4url),mp4url是mp4List里的元素。另外还可以给下载下来的视频命名:urllib.urlretrieve(mp4url,'%s.mp4' %filename),这个filename是个变量,当下载完一个视频后,它就加1,这样所有视频被命名为1.mp4,2.mp4,3.mp4...........
为了便于查看下载进度,可以在urllib.urlretrieve(mp4url,'%s.mp4' %filename)后面加一句:
print 'file '%s.mp4' done' %filename,这样下载完一个视频后就会输出一行提示
运行效果如下:
代码如下:
大家改动一下代码试试别的网站视频,自己动手学的更多。
今天文章发的有点晚,个人原因抱歉,希望大家理解,明天一定按时!