音悦台高清mv下载_音悦台没有了去哪看mv

音悦台高清mv下载_音悦台没有了去哪看mv需要获取的页面:参考了此处,做了修改,代码如下:1#coding:utf-82importurllib23importurllib4importre5importsys6

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

需要获取的页面:

音悦台高清mv下载_音悦台没有了去哪看mv

参考了此处,做了修改,代码如下:

  1 #coding:utf-8
  2 import urllib2
  3 import urllib
  4 import re
  5 import sys
  6 import os
  7 import time
  8 
  9 
 10 class Yinyuetai():
 11 
 12     #地址初始化
 13     def __init__(self, url):
 14         self.i = 1
 15         self.url = url
 16         self.headers = {
 17             'User-Agent':'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
 18             'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
 19         }
 20         self.timeout = 30
 21         self.__init()
 22 
 23 
 24     def __init(self, page=1):
 25         print u"开始下载:第 %d 页 ..." % page
 26         reurl = self.url + "&page=%d" %page
 27         page = self.getPage(reurl)
 28         mvPageList = self.__getMvPageList(page)
 29         if len(mvPageList) > 0:
 30             for plist in mvPageList:
 31                 mvlist = self.getMvURL(plist)
 32                 self.downLoad(mvlist[0], mvlist[1].decode("utf-8"))
 33                 self.i += 1
 34             time.sleep(2)
 35             page += 1
 36             self.__init(page)
 37         else:
 38             print u"\n~~~~~~~~~~~完成!~~~~~~~~~~~~~~"
 39 
 40 
 41 
 42     #获取指定页面源码
 43     def getPage(self, url):
 44         try:
 45             request = urllib2.Request(url, None, self.headers)
 46             response = urllib2.urlopen(request, None, self.timeout)
 47             return response.read()
 48         except:
 49             return []
 50 
 51     #分析列表页,返回MV地址和名字列表[0]:视频ID[1]:视频名称
 52     def __getMvPageList(self, page):
 53             reg = r"<h3><a\shref=\"http:\/\/v.yinyuetai.com\/video\/([0-9]+)\".*title=\"(.*)\".*"
 54             pattern = re.compile(reg)
 55             findList = re.findall(pattern, page)
 56             return findList
 57             #print findList
 58 
 59 
 60 
 61     def getMvURL(self, mvlist):
 62         url = "http://www.yinyuetai.com/insite/get-video-info?flex=true&videoId=%d" % int(mvlist[0])
 63         html = self.getPage(url)
 64 
 65         reg = r"http://\w*?\.yinyuetai\.com/uploads/videos/common/.*?(?=&br)"
 66         pattern=re.compile(reg)
 67         findList = re.findall(pattern, html)
 68 
 69         if len(findList) >= 3:
 70             return [findList[2], mvlist[1]]
 71         else:
 72             return [findList[0], mvlist[1]]
 73 
 74 
 75     #end def
 76 
 77     #下载文件
 78     def downLoad(self, url, name):
 79         name = name + '.flv'
 80         print u"下载:[%s] [%d]" % (name, self.i)
 81         local = self.makeDirs() + '/' + name
 82         try:
 83             urllib.urlretrieve(url, local, self.schedule)
 84             print u"下载完成:[%s]\n" % name
 85         except:
 86             print u"下载失败!\n"
 87 
 88     def makeDirs(self):
 89         path = sys.path[0]
 90         newPath = os.path.join(path, 'flv')
 91         if not os.path.isdir(newPath):
 92             os.mkdir(newPath)
 93         return newPath
 94 
 95     """
 96     回调函数获取进度
 97     @ a 已经下载的数据块
 98     @ b 数据块的大小
 99     @ c 远程文件的大小
100     """
101     def schedule(self, a, b, c):
102         per = 100.0 *a * b / c
103         if per > 100 : per = 100
104         sys.stdout.write(u" 进度:%.1f%%\r" % per)
105         sys.stdout.flush()
106 
107 
108 
109 
110 if __name__ == '__main__':
111     url = 'http://mv.yinyuetai.com/all?pageType=page&sort=weekViews&tab=allmv&parenttab=mv'
112     Yinyuetai(url)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168367.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何学习Python的一些总结

    如何学习Python的一些总结

    2021年10月23日
    42
  • Json的常用方法[通俗易懂]

    Json的常用方法[通俗易懂]Json的常用方法

    2022年4月22日
    44
  • 迭代法求行列式(线性代数公式)

    线性代数行列式计算之迭代法声明与简介线性代数行列式计算之迭代法是利用行列式逐阶展开式会发现或总结出n阶和n-1阶、n-2阶以及剩余阶的关系式,进而推算出整个行列式的最终结果。比如可以由或反过来(),总之能找出一个逐级演变的推导关系式。迭代法又称之为递推法。迭代法正向迭代根据给的行列式可以直观的找出n阶和n-1阶的关系式,这种方法叫做直接迭代法。详见如下示例:计算n阶行列式:#1思路Step1先观察行列式的特点,再整理思路Step2如果我们对第…

    2022年4月11日
    38
  • android sdk集合 下载,Android SDK下载列表(含海内下载)-下

    android sdk集合 下载,Android SDK下载列表(含海内下载)-下AndroidSDK下载列表(含国内下载)-下前一篇博客中借用了三位前辈的博客、里面是SDK的下载列表、当然、里面不可能是完整的、也有很多都没有收录、但是我们可以从那些已经收录了的链接里的命名习惯中可以知道我们想要下载的链接是什么当我们需要的版本不在那些下载列表中时、这就需要我们自己改下载链接了、举个例子:比如、平凡的世界这位前辈收录的下载android-sdk列表中:在AndroidSDK列…

    2022年7月19日
    39
  • qt中readyread信号的使用_心动的信号cp组合有哪些

    qt中readyread信号的使用_心动的信号cp组合有哪些本文主要介绍readyread函数的触发机制,会涉及到一点tcp/ip和流的知识。tcp/ip和流这方面其他朋友介绍很多了,这里我就不再赘述。本文不打算使用太过专业的词汇,一方面主要目的是让大家明白,另一方面是我也不太专业。一、问题描述:你之所以会来看我这篇文章,大概是遇到了一下几个问题:1、使用QTcpSocket时,readyread函数没有触发,或者触发了,但是触发次数不是自己想…

    2022年9月9日
    0
  • 女朋友都看得懂的服务器搭建(纯小白超详细图文教程,阿里云服务器搭建)[通俗易懂]

    女朋友都看得懂的服务器搭建(纯小白超详细图文教程,阿里云服务器搭建)[通俗易懂]文章目录前言一、1.2.二、1.2.总结前言为什么写这篇文章:我的一篇学习笔记,同时分享给大家,互帮互助共同进步。适宜人群:你将学习到:条件:一台联网的电脑资料参考:注意:本文仅供学习使用,如有侵权,请联系作者删除。一、1.2.二、1.2.总结…

    2025年5月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号