Python爬取网易云音乐歌单

import requests
import os
from bs4 import BeautifulSoup
import re
import urllib.request
import time

# 请求头
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
}

# 让python自动创建文件夹 方便保存我们抓取的数据
if not os.path.exists("./网易云歌单/"):
    os.mkdir("./网易云歌单/")

# 让用户输入自己想要抓取的歌单链接
play_url = str(input("请输入要抓取的歌单链接:"))

# 使用requests 请求网站并且获取数据
s = requests.session()
response = s.get(play_url,headers=headers).content.decode('utf-8')

# 筛选数据
findtitle = re.compile('<a href="/song?id=(\d*?)">(.*?)</a>')
soup = BeautifulSoup(response,"lxml")
music_data = []
music_data = soup.find("ul",class_="f-hide")

# 将抓取到的数据进行一次处理,只保留歌曲名称信息和歌曲的URL
# 全局变量临时保存歌曲名称和歌曲的url
lists = []
for music in music_data.find_all('a'):
    list = []
    music_url = "https://music.163.com/song/media/outer/url"+music['href'][5:]+'.mp3'
    music_name = music.text
    list.append(music_name)
    list.append(music_url)

    # 将局部变量中的数据添加到全局变量当中
    lists.append(list)

# 下载
for i in lists:
    url = i[1]
    name = i[0]
    print(url,name)


    try:
        print('正在下载..',name)
        urllib.request.urlretrieve(url,'./网易云歌单/%s.mp3' % (name+str(time.time())))
        print('下载成功..', name)
    except:
        print('下载失败,请联系管理员QQ:634498594')
本文作者: Author:     文章标题: Python爬取网易云音乐歌单
本文地址: https://codewei.cn/archives/208/      
版权说明:若无注明,本文皆为“阿伟的小屋”原创,转载请保留文章出处
Last modification:July 8th, 2020 at 03:14 pm
贫困山区儿童,谢谢打赏