【Python爬⾍】批量抓取⽹页上的视频
1、为何学python
电脑如何自动关机编程语⾔⽅⾯,本科这⼏年⼀直都⽤C/C++,因为研究⽣⽅向与机器学习相关,所以最近⼤部分时间在学机器学习,看了《机器学习实战》这本书,⾥⾯的实例都是⽤python来写,并且⽬前来说,对机器学习算法⽀持得⽐较多的语⾔是python,matlab/octave当然也很适合⽤于机器学习,但是毕竟是学术⼯具,速度等⽅⾯肯定不如python,⼯业开发还是⽤python、c++。
总之对于学习机器学习,python以及NumPy库要熟悉。
所以这两天决定学⼀下python,就了个评价还不错的公开课看了两天,边看边敲代码,感觉python确实是⼀门很简单的语⾔,只要有点C++、C、Java或者其他语⾔基础,⼀两天完全可以⼊门python。当然⼊门简单,精通难,还是要靠多练。
下⾯简单的⼩爬⾍程序是看完视频后写的,算是第⼀个⼩程序
2、爬⾍⼩程序
因为刚好要看Andrew Ng的机器学习课程,所以就顺便⽤这个爬⾍程序抓取了⽹页上的视频,⽹页地址:
v.163/special/opencourse/machinelearning.html
河北省高考成绩什么时间公布2022⽹页上提供下载的视频在源代码中都是这种式:href=''
据此可以写出所要匹配的正则表达式:r=r" href='(http.*\.mp4)' "
接下来的任务就是获取⽹页源代码,然后在源代码⾥⾯寻所有匹配正则r的字符串。
抓取源代码可以利⽤urllib⾥的urlopen()⽅法:page=urllib.urlopen(url),返回的是⼀个页⾯的对象page,通过
ad()可以将页⾯源代码保存到html变量中。
华晨宇身价源代码抓下来之后,就要寻并获取⾥⾯所有的:
href=''
可以通过正则r,以及正则模块re⾥的findall⽅法来获取:mp4List=re.findall(re_mp4,html)
findall返回的是列表,列表⾥的元素就是视频的地址了,⽐如下⾯就是⼀个视频地址:
视频的地址抓取下来后,利⽤模块urllib⾥的urlretrieve()⽅法通过视频地址将视频下载下来: urllib.urlretrieve(mp4url),mp4url是mp4List⾥的元素。另外还可以给下载下来的视频命名:urllib.urlretrieve(mp4url,"%s.mp4" %filename),这个filename是个变量,当下载完⼀个视频后,它就加1,这样所有视频被命名为1.mp4,2.mp4,
为了便于查看下载进度,可以在urllib.urlretrieve(mp4url,"%s.mp4" %filename)后⾯加⼀句:
print 'file "%s.mp4" done' %filename,这样下载完⼀个视频后就会输出⼀⾏提⽰
运⾏效果如下:
代码如下:(python2.6)
#!/usr/bin/python
import re
import urllib
def getHtml(url):
page=urllib.urlopen(url)
ad()
return html
def getMp4(html):
r=r"href='(http.*\.mp4)'"
re_mp4=repile(r)
mp4List=re.findall(re_mp4,html)
filename=1
for mp4url in mp4List:
urllib.urlretrieve(mp4url,"%s.mp4" %filename) print 'file "%s.mp4" done' %filename
去美国留学考什么filename+=1
赖小明女星名单url=raw_input("please input the source url:") html=getHtml(url)
梦幻西游画魂getMp4(html)
发布评论