下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
#enCoding: UTF-8"""音悦台mv批量下载2015-02-11[email protected]"""import urllib2import urllibimport reimport sysimport osimport timeclass Yinyuetai(): """ 构造函数 @param url mv 列表地址 """ def __init__(self,url): self.i = 1 self.url = url self.headers = { 'User-Agent':'Mozilla/5.0 (windows NT 6.3) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/39.0.2171.95 Safari/537.36','Accept':'text/HTML,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' } self.timeout = 30 self.__init() #end def def __init(self,page=1): print u"开始下载:第 %d 页 ..." % page reurl = self.url + "&page=%d" % page #print reurl mvPagelist = self.__getMvPagelist(reurl) if len(mvPagelist) > 0: for pList in mvPagelist: mvList = self.getMvUrl(pList) self.__download(mvList[0],mvList[1].decode("utf-8")) self.i += 1 time.sleep(2) page += 1 self.__init(page) else: print u"\n~~~~~~~~~~~~完成!~~~~~~~~~~~~" #end def """ 分析列表页 return 返回MV地址和名字列表[0]:视频ID[1]:视频名称 """ def __getMvPagelist(self,url): try: request = urllib2.Request(url,None,self.headers) response = urllib2.urlopen(request,self.timeout) responseHTML = response.read() reg = r"<h3><a\shref=\"http:\/\/v.yinyuetai.com\/vIDeo\/([0-9]+)\".*Title=\"(.*)\".*" pattern=re.compile(reg) findList = re.findall(pattern,responseHTML) return findList except: return [] #end def """ 读取视频列表 @param mvList 页面视频ID和名字列表 return 返回视频地址(第一个地址)(如果有3个地址,则返回最后一个地址(高清)) """ def getMvUrl(self,mvList): url = "http://www.yinyuetai.com/insite/get-vIDeo-info?flex=true&vIDeoID=%d" % int(mvList[0]) try: req = urllib2.Request(url,self.headers) res = urllib2.urlopen(req,self.timeout) HTML = res.read() reg = r"http://\w*?\.yinyuetai\.com/uploads/vIDeos/common/.*?(?=&br)" pattern=re.compile(reg) findList = re.findall(pattern,HTML) if len(findList) >= 3: return [findList[2],mvList[1]] else: return [findList[0],mvList[1]] except: print u" 读取视频列表失败!\n" #end def """ 下载文件 @param url 视频地址 @param name 视频名称 """ def __download(self,url,name): name = name + '.flv' print u" 下载:[%s] [%d]" % (name,self.i) local = self.__createDir()+'/'+name try: urllib.urlretrIEve(url,local,self.__schedule) print u" 下载完成:[%s]\n" % name except: print u" 下载失败!\n" """ 检查文件保存路径是否存在,不存在则创建 return 文件保存路径 """ def __createDir(self): path = sys.path[0] new_path = os.path.join(path,'flv') if not os.path.isdir(new_path): os.mkdir(new_path) return new_path #end def """ 回调函数获取进度 @ a 已经下载的数据块 @ b 数据块的大小 @ c 远程文件的大小 """ def __schedule(self,a,b,c): per = 100.0 * a * b / c if per > 100 : per = 100 sys.stdout.write(u" 进度:%.1f%%\r" % per) sys.stdout.flush() #end def #end class if __name__ == '__main__': url = 'http://mv.yinyuetai.com/all?pageType=page&sort=weekVIEws&tab=allmv&parenttab=mv' Yinyuetai(url)
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的音悦台mv批量下载-python全部内容,希望文章能够帮你解决音悦台mv批量下载-python所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)