先声明一下,仅供参考学习使用。
给大家分享一下刚刚完成的V动画视频播放页面视频爬取的脚本。
简单说两句:
1、使用HTMLParser库,完成对页面视频播放源地址的解析
2、使用Requests库,完成了对视频的下载
接下来看代码:
# coding:utf-8
'''
Note:
爬取v动画视频播放页面的视频
(因为页面播放器在iframe中,有二次网页请求,所以需要对数据进行二次解析。
第一次解析页面获得iframe请求地址,第二期获取视频源地址)
Author:Qred
Date:2019/6/20
'''
import requests
import os
from HTMLParser import HTMLParser
def GetData(url):
'''
获取页面中的视频地址
:param url: 页面地址
:return: 视频源地址
'''
# 第一次解析页面获得iframe请求地址
raw = requests.get(url).text
# print raw
parser = MyHTMLParser()
parser.feed(raw)
url = parser.url
# 第二期获取视频源地址
raw = requests.get(url).text
# print raw
parser = HisHTMLParser()
parser.feed(raw)
url = parser.url
return url
class MyHTMLParser(HTMLParser):
'''
获取视频地址
'''
def __init__(self):
self.url = ''
self.reset()
def handle_data( self, data):
if self.lasttag == 'script':
if 'document.' in data :
tmp = data.split('"')
tmp = tmp[1][:-3]
self.url = tmp
class HisHTMLParser(HTMLParser):
'''
获取iframe中的数据
'''
def __init__(self):
self.url = ''
self.reset()
def handle_starttag ( self, tag, attrs ):
# print("Start tag:", tag)
if self.lasttag == 'source':
for attr in attrs :
if 'br=1' in attr[1]:
self.url = attr[1]
# print attr[1]
def download_file(url, path):
'''
下载视频
:param url: 视频地址
:param path: 保存路径
'''
with requests.get(url, stream=True) as r:
chunk_size = 1024
print '下载开始'
with open(path, "wb") as f:
for chunk in r.iter_content(chunk_size=chunk_size):
f.write(chunk)
print '下载结束'
if __name__ == '__main__':
url = 'http://www.vdonghua.cn/info/204.html' # 页面地址
VedioUrl = GetData(url)
download_file(VedioUrl,'204.mp4')# 保存视频至指定位置
(小声告诉大家,随后将分享如何爬取万门大学的免费视频课程方法,设置ffpemg的使用哟!)