专栏首页python学习教程python爬虫学习,python抓取百度音乐mp3歌曲

python爬虫学习,python抓取百度音乐mp3歌曲

python抓取百度音乐mp3歌曲,目前成功率不是100%,因为我每首歌只抓一遍,没有去判断抓取成功情况和链接速度,还有我取得歌曲名称的方式也有点不合适,对歌曲名称较长的歌曲来说去搜索来源有时候是搜捕到的,采用准确的歌曲名称后就没有这个问题了。

python抓取百度音乐mp3歌曲代码

#-*- coding: UTF-8 -*- 
'''
Created on 2012-3-8
 
@author: tiantian
www.iplaypy.com python
'''
import urllib
import re
 
top500 = 'http://list.mp3.baidu.com/top/top500.html'
 
songs = []
 
def main():
     
    divr = '<div class="rank-top-wrap clearfix".*?<ul.*?</ul>.*?<ul.*?</ul>.*?</div>'   
    mf = urllib.urlopen(top500)
    content = mf.read()
    content = content.decode('gbk')
 
    content = re.sub('\n+',' ',content)
    alldiv = re.findall(divr,content)
    i =0
    for div in alldiv:
        ulr = '<ul.*?</ul>'
        allul = re.findall(ulr,div)
         
        for ul in allul:
            lir = '<li.*?</li>'
            allli = re.findall(lir,ul)
             
            for li in allli:
                if i<245:
                    i = i+1
                    continue
                i = i+1
                songName = '<div class="music-name">.*?<a.*?>(.*?)</a>.*?</div>'
                name = re.findall(songName,li)
                songAuthor = '<div class="singer">.*?<a.*?>(.*?)</a>.*?</div>'
                author = re.findall(songAuthor,li)
                 
                songs.append([name[0],author[0]])
                 
                songUrl = getSongUrl(name[0],author[0])
                try:
                    urllib.urlretrieve(songUrl,'songs/'+name[0]+'-'+author[0]+'.mp3')
                    # 异常检查并不能判断是否下载成功,需要进行其他判断
                    print i,name[0],author[0],'下载成功'
                     
                except Exception :
                    print i,name[0],author[0],'没下载成功'
                     
 
def getSongUrl(songName,authorName):
    '''这里由于歌曲名称和作者名称的不完整,可能导致无法得到url,'''
    songUrl = 'http://box.zhangmen.baidu.com/x?op=12&count=1&mtype=1&title=%s$$%s$$$$&url=&listenreelect=0&.r=0.1696378872729838' % (urllib.quote(songName.encode('gbk')),urllib.quote(authorName.encode('gbk')))
    f = urllib.urlopen(songUrl)
    c = f.read()
    url1 = re.findall('<encode>.*?CDATA\[(.*?)\]].*?</encode>',c)
    url2 = re.findall('<decode>.*?CDATA\[(.*?)\]].*?</decode>',c)
    if len(url1) <1:
        return 'http://box.zhangmen.baidu.com/unknow.mp3'
     
    try:
        return url1[0][:url1[0].rindex('/')+1] + url2[0]
    except Exception:
        return url1[0]
     
if __name__ == '__main__':
    main()

ps:这里推荐一下我的python零基础系统学习交流扣扣qun:322795889,学习python有不懂的(学习方法,学习路线,如何学习有效率的问题)可以加一下,群里有不错的学习教程,开发工具、电子书籍分享。专业的老师答疑

好啦!文章就给看官们分享到这儿

最后,如果觉得有帮助,记得关注、转发、收藏哟

·END·

本文分享自微信公众号 - python教程(pythonjc),作者:小雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫获取豆瓣电影并写入excel

    这篇文章主要介绍了Python爬虫获取豆瓣电影并写入excel ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考...

    python学习教程
  • python爬虫学习 爬取幽默笑话网站

    这篇文章主要介绍了python爬虫爬取幽默笑话网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python学习教程
  • Python爬虫经典案例详解:爬取豆瓣电影top250写入Excel表格

    find_all('div',"info"),find是查找,find_all就是查找全部,查找什么呢?查找标记名是div并且class属性是info的全部元素...

    python学习教程
  • ROS之turtlesim趣味编程练习-导航-(适用Windows和Linux,Melodic和Dashing)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    zhangrelay
  • react.js:3640 Warning: Each child in an array or iterator should have a unique "key" prop. Check the

    react.js:3640 Warning: Each child in an array or iterator should have a unique "...

    一个会写诗的程序员
  • 使用BigDecimal 进行浮点值的精确计算

    输出打印为: b1=>7.2882 b2=>7.1 7.22-7.0=0.1882

    Dream城堡
  • 反-反爬虫:用几行代码写出和人类一样的动态爬虫

    本文将从 Phantomjs 动态爬虫介绍起,用3行代码傻瓜式完成基于 Casper 的动态爬虫来绕过对抗策略获取页面数据。

    T4erg
  • 综述:持续感知系统在边缘计算的应用

    随着边缘计算技术的兴起,各种各样的感知系统给人类带来了便捷高效的生活。以日常使用的手机为例,工程师为其置入了各种各样的传感器,并通过运行其上的机器学习算法,部署...

    AI科技大本营
  • Golang包——pprof

    pprof 是用于可视化和分析性能分析数据的工具 CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,...

    羊羽shine
  • 文本

    font-size 文字大小 font-weight 文字加粗(bold加粗/normal正常) font-style 文字倾斜(italic倾斜/norm...

    河湾欢儿

扫码关注云+社区

领取腾讯云代金券