python_抓取网页视频

1、为何学python

编程语言方面,本科这几年一直都用C/C++,因为研究生方向与机器学习相关,所以最近大部分时间在学机器学习,看了《机器学习实战》这本书,里面的实例都是用python来写,并且目前来说,对机器学习算法支持得比较多的语言是python,matlab/octave当然也很适合用于机器学习,但是毕竟是学术工具,速度等方面肯定不如python,工业开发还是用python、c++。

总之对于学习机器学习,python以及NumPy库要熟悉。

所以这两天决定学一下python,就找了个评价还不错的公开课看了两天,边看边敲代码,感觉python确实是一门很简单的语言,只要有点C++、C、Java或者其他语言基础,一两天完全可以入门python。当然入门简单,精通难,还是要靠多练。

下面简单的小爬虫程序是看完视频后写的,算是第一个小程序

2、爬虫小程序

因为刚好要看Andrew Ng的机器学习课程,所以就顺便用这个爬虫程序抓取了网页上的视频,网页地址:
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变量中。


源代码抓下来之后,就要寻找并获取里面所有的:
可以通过正则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, 这样下载完一个视频后就会输出一行提示


运行效果如下:






代码如下:(python2.6)
  1. #!/usr/bin/python  
  2. import re   
  3. import urllib  
  4. def getHtml(url):  
  5.     page=urllib.urlopen(url)  
  6.     html=page.read()  
  7.     return html  
  8. def getMp4(html):  
  9.     r=r"href='(http.*\.mp4)'"  
  10.     re_mp4=re.compile(r)  
  11.     mp4List=re.findall(re_mp4,html)  
  12.     filename=1  
  13.     for mp4url in mp4List:  
  14.         urllib.urlretrieve(mp4url,"%s.mp4" %filename)  
  15.         print  'file "%s.mp4" done' %filename  
  16.         filename+=1  
  17. url=raw_input("please input the source url:")  
  18. html=getHtml(url)  
  19. getMp4(html) 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 Python抓取网页视频可以使用第三方库来实现,比如说使用 requests 库来发起 HTTP 请求,再使用 BeautifulSoup 库来解析 HTML 文档,最后使用 ffmpeg 库来下载和处理视频。 下面是一个简单的例子: ``` import requests from bs4 import BeautifulSoup # 发起 HTTP 请求并获取响应 response = requests.get('http://example.com/video') # 使用 BeautifulSoup 解析 HTML 文档 soup = BeautifulSoup(response.text, 'html.parser') # 找到视频所在的标签 video_tag = soup.find('video') # 获取视频地址 video_url = video_tag['src'] # 使用 ffmpeg 下载和处理视频 # 下载视频 !ffmpeg -i $video_url -c copy video.mp4 # 将视频格式转换为 mp3 !ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192k -f mp3 audio.mp3 ``` 注意:在这个例子中,我们使用了 ffmpeg 库来处理视频,但是你也可以使用其他的库,比如说 moviepy 库。 ### 回答2: Python抓取网页视频可以使用第三方库如requests、BeautifulSoup和urllib等来实现。 首先,导入所需的库: ```python import requests from bs4 import BeautifulSoup import urllib ``` 其次,通过requests库获取网页的HTML内容: ```python url = "http://www.example.com" # 网页的URL response = requests.get(url) html_content = response.content ``` 然后,利用BeautifulSoup库解析HTML内容,找到视频的标签: ```python soup = BeautifulSoup(html_content, 'html.parser') video_tag = soup.find('video') # 找到视频标签 video_url = video_tag['src'] # 获取视频的URL ``` 最后,使用urllib库下载视频文件: ```python urllib.request.urlretrieve(video_url, 'video.mp4') # 下载视频文件 ``` 以上就是使用Python抓取网页视频的简单流程。当然,具体的网页结构和视频的地址获取方式会因网站而异,需要根据实际情况进行相应的修改。 ### 回答3: Python可以通过爬虫技术来抓取网页上的视频。具体步骤如下: 1. 导入必要的库: 首先,需要导入requests库来发起网络请求,以获取网页源代码;另外,还需要使用BeautifulSoup库来解析网页源代码。 2. 发起网络请求: 使用requests库中的get方法,传入视频所在网页的URL,可以获取该网页的源代码。 3. 解析网页源代码: 使用BeautifulSoup库来解析网页源代码,可以方便地提取出网页上的视频相关信息。可以使用该库的find_all方法来搜索指定的HTML标签,再根据标签属性或其它特征来定位视频元素。 4. 提取视频链接: 在解析网页源代码时,可以通过BeautifulSoup库找到视频所在的标签元素,并获取该元素的视频链接。视频链接一般是包含在HTML标签的属性中,需根据具体标签和属性结构进行提取。 5. 下载视频: 通过获取到的视频链接,使用requests库的get方法发起下载请求,并保存为本地视频文件。可以通过open方法创建一个文件,再通过write方法将请求返回的数据写入文件中。 需要注意的是,部分网站可能对视频进行了保护措施,如使用视频云服务、加密等技术,导致视频链接无法直接获取。此时,可以考虑分析网页中的JavaScript代码,了解视频链接的生成方式,并在Python中模拟这些生成方式来获取视频链接。 总之,利用Python的网络爬虫技术,可以方便地抓取网页上的视频,并保存为本地文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值