HTMLparser爬取V动画的视频文件

先声明一下,仅供参考学习使用。

给大家分享一下刚刚完成的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的使用哟!)

你可能感兴趣的:(HTML解析)