【python学习.Github上的代码】
2014-12-07 16:01
253 查看
import re, urllib, urllib2 class Xiami(object): def __init__(self, url_song): self.url_song = url_song self.url_xml = self.get_xml() self.info = self. get_info() self.loc = self.info[0] self.lyc = self.info[1] self.pic = self.info[2] def get_xml(self): return 'http://www.xiami.com/song/playlist/id/%s/object_name/default/object_id/0' % re.search('\d+', self.url_song).group() def get_info(self): headers = { 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' } req = urllib2.Request( url = self.url_xml, headers = headers ) try: xml = urllib2.urlopen(req).read() except Exception, e: raise u'网络错误!,请重试!' location = re.search(r'(<location>)(.+)(<\/location>)', xml).group(2) lyc = re.search(r'(<lyric>)(.+)(<\/lyric>)', xml).group(2) pic = re.search(r'(<pic>)(.+)(<\/pic>)', xml).group(2) return (location, lyc, pic) def get_url(self): strlen = len(self.loc[1:]) rows = int(self.loc[0]) cols = strlen / rows right_rows = strlen % rows new_str = self.loc[1:] real_url = '' for i in xrange(strlen): x = i % rows y = i / rows p = 0 if x <= right_rows: p = x * (cols + 1) + y else: p = right_rows * (cols + 1) + (x - right_rows) * cols + y real_url += new_str[p] return urllib2.unquote(real_url).replace('^', '0') if __name__ == '__main__': url = raw_input('please enter the url of the song: ') xi = Xiami(url) url_download = xi.get_url() url_pic = xi.pic url_lyc = xi.lyc print u'下载地址是: %s' % url_download print u"下载开始..." try: urllib.urlretrieve(url_download, r'new.mp3') urllib.urlretrieve(url_pic, r'new.jpg') urllib.urlretrieve(url_lyc, r'new.lyc') except: raise(u'请求错误,请重试') print u"完成下载..."
1.这些代码都很简单易读懂,必要地方还有注释,方便别人阅读,也方便自己找错误
2.充分利用类的设计,我们现在的小程序都很小所以没有什么必要用类,但这种面向对象的精神应该保留下来,方便以后适应大型程序的开发
3.变量名已看就懂。我的嗲吗有时候变量名图个省事就用a,b,c代替,这样有时会适得其反
相关文章推荐
- Python 学习笔记:主要是些代码和说明,去面试应该够用了
- Learn Python The Hard Way学习(23) - 读一些代码
- python学习手册中的python多态示例代码
- python学习笔记--代码
- 新学习的Python的代码(while循环)
- 学习Python列表内涵:一行代码搞定双倍超立方数计算
- Python学习(04):python代码打包与发布
- [更新Github地址]python学习,自己写了个简单聊天工具mychat
- python学习一:软件版本选择以及代码调试初探
- 机器学习完整过程案例分布解析,python代码解析
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析
- Python学习 代码 四
- Python学习 代码 三
- python中的sqlalchemy ORM学习测试代码!
- 【2013】实习收获4:关于python中利用ctypes调用c++代码的学习总结
- Learn Python The Hard Way学习(18) - 命名,变量,代码,函数
- Python学习 代码 二
- git学习——上传项目代码到github
- Python学习笔记二(共享代码)
- [深度学习]Python/Theano实现逻辑回归网络的代码分析