您的位置:首页 > 产品设计 > UI/UE

8月最新千千音乐爬取(requests+bs4)

2019-07-08 20:39 78 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44220464/article/details/95096286

据之前千千音乐撸代码几个月了,该网站应该是月初改的加密方式,原因大概是版权问题很多音乐都下架,后面的有些音乐也不能下载,请谅解
之前可以在F12里直接找到url的,现在我用的fiddler抓包抓到
代码如下,写了三个函数,分别为单页多页爬取,这里的歌曲名没具体找,将就下

from urllib import request
from bs4 import BeautifulSoup
import requests

def get_songid_list(headers):
# 构造歌曲id列表
key = input('请输入歌手名字')
item = {}
item['key'] = key
url_key = 'http://music.taihe.com/search?'
#构造歌手页url
response = requests.get(url=url_key,headers=headers,params=item)
# 使用bs4解析源码
html = response.text
# 批量获取歌手的歌曲名id
soup = BeautifulSoup(html,'lxml')
content = soup.select('.song-title a')
# 构造歌曲列表,方便下载
items = []
for c in content[0::2]:
link_id = c.get('href').split('/')[-1]
items.append(link_id)
# 返回一个带有歌曲id的列表
return items

def multi_page(headers):
#多页抓取(不同的是起始位置,页数遍历即可)
page = input('请输入要下载的页数')
key = input('请输入歌手名字')
item = {}
items = []
for page in range(int(page)):
item['start'] = 0*page
item['key'] = key
item['size'] = '20'
#构造歌手页url
url_key = 'http://music.taihe.com/search?'
#构造歌手页url
response = requests.get(url=url_key,headers=headers,params=item)
# 使用bs4解析源码
html = response.text
# 批量获取歌手的歌曲名id
soup = BeautifulSoup(html,'lxml')
content = soup.select('.song-title a')

for c in content[0::2]:
link_id = c.get('href').split('/')[-1]
items.append(link_id)
# 返回一个带有歌曲id的列表
return items

def load_music(url_list):
# 写入文件函数
# 遍历歌曲id列表
for url in url_list:
parmas = {'songid':url}
load_url = 'http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC'
response = requests.get(load_url,headers=headers,params=parmas)
res = response.json()
# 期中有的show_link取不到,没仔细看
try:
link = res['bitrate']['show_link']

req = request.Request(url=link,headers=headers)
r = request.urlopen(req).read()
#我们以二进制方式写入
with open(url+'.mp3','wb')as f:
f.write(r)
print(url,'下载成功')
except KeyError as K:
print(K+'is not exist')

if __name__ == "__main__":
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.16 Safari/537.36',
}
# load_music(get_songid_list(headers=headers))
multi_page()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐