Python下載百度新歌100的代碼

來源:互聯網
上載者:User
#!/usr/bin/python 
# -*- coding: utf-8 -*- 
# Copyright (c) 2006 UbuntuChina <http://www.ubuntu.org.cn> 
# License: GPLv2 
# Author: oneleaf <oneleaf AT gmail.com> 

import httplib 
import re 
import urllib 
import os 
import locale 

def getdownurl(url): 
    urllist=[] 
    conn = httplib.HTTPConnection('mp3.baidu.com') 
    conn.request("GET",url) 
    response = conn.getresponse() 
    html=response.read() 
    conn.close() 
    expression='http://220.181.27.54/m(.*)</a>' 
    listSentence = re.findall(expression, html) 
    lineno=0 
    while lineno<len(listSentence): 
        mp3url=re.search('title=(.*)onclick',listSentence[lineno]) 
        if mp3url: 
           mp3url=mp3url.group(0) 
           mp3url=re.search('http(\S*)',mp3url) 
           if mp3url: 
              mp3url=mp3url.group(0) 
              try: 
                  mp3url=mp3url.decode('gbk') 
              except:pass 
              urllist.append(mp3url) 
        lineno+=2 
    return urllist 

def downmp3(url,author,name,filelist): 
    filename=author+"-"+name; 
    for i in filelist: 
        name=unicode(i,locale.getpreferredencoding()) 
        if name.find(filename) == 0: 
            print u"檔案已經下載,忽略。" 
            return 1 
    urllists=getdownurl(url) 
    for i in urllists:        
        print u"正在串連",i 
        
        ext=i[-4:] 
        try: 
            urlopen = urllib.URLopener() 
            fp=urlopen.open(i) 
            data = fp.read() 
            fp.close() 
            filename=filename+ext; 
            file=open(filename,'w+b') 
            file.write(data) 
            file.close() 
            print u"下載成功!" 
            return 1 
        except: 
            continue 
    return 0 

if __name__ == "__main__": 
    conn = httplib.HTTPConnection('list.mp3.baidu.com') 
    conn.request("GET",'/list/newhits.html?id=1') 
    response = conn.getresponse() 
    html=response.read().decode('gbk') 
    conn.close() 
    expression='<a href="http://mp3.baidu.com/m(.*)</a>' 
    listSentence = re.findall(expression, html) 
    lineno=0 
    while lineno<len(listSentence): 
       url=re.search('(.*)target',listSentence[lineno]) 
       url='/m'+url.group(0)[:-8] 
       name=re.search('blank>(.*)',listSentence[lineno]) 
       name=name.group(0)[6:] 
       author=re.search('blank>(.*)',listSentence[lineno+1]) 
       author=author.group(0)[6:] 
       print u"開始下載",author,name 
       filelist=os.listdir('.'); 
       if downmp3(url,author,name,filelist)==0: 
          print u"下載",author,name,u'失敗!' 
       lineno+=2 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.