(轉自oschina)python學習中的一些小例子

來源:互聯網
上載者:User

代碼轉自oschina http://www.oschina.net/code/list_by_user?id=120579

發表在這裡只是為了學習存檔,如果您不允許轉載,請通知我,我立刻處理。

因為我是python的初學者,但是又不滿足於手中所學,覺得python可以做一些簡單的應用。

之前看到有人用python寫的金山快盤簽到程式,有道詞典查詞程式,我覺得很有意思,我也想學學。

以下是我遇到的一些有意思的例子

python列出目前的目錄下的檔案代碼

from os.path import basename, isdirfrom os import listdirdef traverse(path, depth=0):    print depth* '| ' + '|_', basename(path)    if(isdir(path)):        for item in listdir(path):            traverse(path+'/'+item, depth+1)if __name__ == '__main__':    traverse('./')

python抓取統計局網站各縣市資料

#! /usr/bin/env python# -*- coding: utf-8 -*-'''抓取 國家統計局網站 上的最新縣及縣以上行政區劃代碼,並儲存成 json 格式的js檔案by Conanca'''import urllib2,jsonurl_prefix = 'http://www.stats.gov.cn/tjbz/xzqhdm/'var_text = 'xzqh'code_text = 'C'name_text = 'N'sub_text = 'S'file_path = 'xzqh.js'def set_proxy(proxy):    ''' 設定Proxy 伺服器 '''    urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler({'http' : proxy})))def get_latest_page():    ''' 擷取最新的行政區劃代碼公布頁 '''    content = urllib2.urlopen(url_prefix + 'index.htm').read()    index_start = content.find("<td width='76%' height='20' valign='middle'><a href='") + 53    index_end = content.find("' target='_blank'  class='a2'>")    xzqhdm_url = content[index_start:index_end]    xzqhdm_url = url_prefix + xzqhdm_url    print 'latest page:' + xzqhdm_url    return xzqhdm_urldef crawl_page(xzqhdm_url):    ''' 爬行政區劃代碼公布頁 '''    print 'crawling...'    content = urllib2.urlopen(xzqhdm_url).read()    index_start = content.find('''<td class='content'><span class="content">''') + 42    index_end = content.find("<BR></span></td>")    content = content[index_start:index_end]    # print content    return contentdef convert(content):    ''' 將爬到的內容轉換為行政區劃 list '''    print 'converting...'    item_arr = content.replace(' ','*').split('<BR>')    p_list = []    current_p = {}    current_p_sub = []    current_c = {}    current_c_sub = []    current_d = {}    for item_str in item_arr:        #print item_str        if item_str.count('*')==1:            print 'got a province:'+item_str            if len(current_p)!=0:                # 為當前省 設定其子項;省列表中添加當前省                current_p[sub_text] = current_p_sub                p_list.append(current_p)            # 賦值 當前省;初始化 當前省的子項            current_p = creat_item(item_str)            current_p_sub = []        elif item_str.count('*')==3:            print '********got a city:'+item_str            # 賦值 當前市;初始化 當前市的子項            current_c = creat_item(item_str)            current_c_sub = []            if len(current_c)!=0:                # 為當前市 設定其子項;當前省的子項中添加當前市                current_c[sub_text] = current_c_sub                current_p_sub.append(current_c)        elif item_str.count('*')>=5:            print '****************got a district:'+item_str            # 賦值 當前區縣;當前市的子項中添加當前區縣            current_d = creat_item(item_str)            current_c_sub.append(current_d)        else :            print 'invaild item string:'+item_str    return p_listdef creat_item(item_str):    ''' 根據字串建立條目對象 '''    t = item_str.split(' ')    code = t[0].replace('*','')    name = t[1].replace('*','')    item = {code_text:code,name_text:name}    #print item    return itemdef write_to(content,file_path):    ''' 將行政區劃列表寫入指定的js檔案中 '''    print 'writing...'    f = open(file_path, 'w')    f.write('var {0}={1}'.format(var_text,content))    f.close()    print 'finished!'   if __name__ == '__main__':    #set_proxy('http://192.168.2.61:8080')    url = get_latest_page()    content = crawl_page(url)    p_list = convert(content)    content = json.dumps(p_list,ensure_ascii=False,separators=(',',':')).decode('gb18030').encode('utf-8')    write_to(content,file_path)

可將抓取到的資料存在out檔案裡,ubuntu下亂碼。

使用iconv命令轉碼即可。

iconv  -f gb2312 -t utf8 filename

從百度音樂抓取音樂,指定頻道。

這個程式抓取普通品質的音樂,我想抓取高一點的音樂,只是不知道該怎麼做。不知的python有沒有與html互動的模組可以調用。

#-*- coding: utf-8 -*-importre,urllibbaseurl= "http://music.baidu.com"url= "http://music.baidu.com/search/tag?key=古典"html= urllib.urlopen(url).read()uri= re.findall(r'/song/\d+',html,re.M)lst= []print urifor i in uri:link=baseurl+i+'/download'print linklst.insert(0,link)for k in lst:res = urllib.urlopen(k).read()down = re.search('http://[^ ]*xcode.[a-z0-9]*',res,re.M).group()print downs1 = re.search('title=".*',res,re.M).group()print s1s2 = re.search('>.*<.a',s1,re.M).group()print s2s3 = s2[1:-3]print s3urllib.urlretrieve(down, s3+'.mp3')

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.