您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 1浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python爬取网易云音乐歌单音乐

嗨学编程 发布时间:2019-08-09 20:27:19 ,浏览量:1

在网易云音乐中第一页歌单的url:http://music.163.com/#/discover/playlist/

依次第二页:http://music.163.com/#/discover/playlist/?order=hot&cat=全部&limit=35&offset=35

依次第三页:http://music.163.com/#/discover/playlist/?order=hot&cat=全部&limit=35&offset=70

然后从歌单的查看框架的源代码:

image

从图中的源代码可以得到每个歌单的url:eg:http://music.163.com/#/playlist?id=696806036

然后相应的歌单页面中可以得到歌单中每首歌的名字和歌手:

然后歌名歌手,在百度音乐搜索api接口获得songid,api是url = “http://sug.music.baidu.com/info/suggestion” image.png 然后从获取到的songid从百度音乐免费API接口:http://music.baidu.com/data/music/fmlink,获取songLink进行下载,并且将songLink保存到本地.flac

eg;http://music.baidu.com/data/music/fmlink?rate=320&songIds=242078437&type=flac

下载结果:

image

代码:

# -*- coding: utf-8 -*-
import re
import urllib
import urllib2
import os
import stat
import itertools
import re
import sys
import requests
import json
import time
import socket
import urlparse
import csv
import random
from datetime import datetime, timedelta
import lxml.html
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''

from zipfile import ZipFile
from StringIO import StringIO
from downloader import Downloader
from bs4 import BeautifulSoup
from HTMLParser import HTMLParser
from itertools import product
import sys
reload(sys)
sys.setdefaultencoding('utf8')
URL = 'http://music.163.com'
NUM = 5
def download(url, user_agent='wswp', num_try=2):

    headers = {'User_agent': user_agent}
    request = urllib2.Request(url, headers=headers)
    try:
        html = urllib2.urlopen(request).read()
    except urllib2.URLError as e:
        print 'Download error', e.reason
        html = None
        if num_try > 0:
            if hasattr(e, 'code') and 500  1:
            page = (flag - 1) * 35
            url = 'http://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset='+str(page)
        else:
            url = 'http://music.163.com/discover/playlist'
        print url
        html = download(url)
        list = get_play_list(html)
        for i in list:
            song_list_url = URL + i
            print song_list_url
            singer_list = get_song_list(song_list_url)
            singer_name = get_song_singer(song_list_url)
            tt = len(singer_list)
            mm = len(singer_name)
            index = min(tt,mm)
            num = num + mm
            for j in range(0, index):
                print singer_name[j]
                print singer_list[j]
                download_song(singer_list[j],singer_name[j])
                print "\n"

    print "Download " + str(num) + " music\n"
关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0950s