大牛论坛_破解软件_原创软件_游戏娱乐 - www.daniu520.com

 找回密码
 注册[Register]
查看: 71|回复: 6

[python] 酷我音乐歌曲爬取

[复制链接]
发表于 2022-5-14 09:58 | 显示全部楼层 |阅读模式
[Python] 纯文本查看 复制代码
import asyncio
from urllib.parse import quote
import aiohttp
import logging
import aiofiles
 
referer = 'https://www.kuwo.cn'
# 请求头
headers = {
    "Cookie": "_ga=GA1.2.2021007609.1602479334; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1602479334,1602673632; "
              "_gid=GA1.2.168402150.1602673633; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1602673824; "
              "kw_token=5LER5W4ZD1C",
    "csrf": "5LER5W4ZD1C",
    "Referer": "{}".format(referer),
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/86.0.4240.75 Safari/537.36",
}
 
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
 
 
async def searchSong(session, song_name):
    encodeName = quote(song_name)
    url = f'https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={encodeName}&pn=1&rn=30&httpsStatus=1'
    res = await session.get(url=url, headers=headers)
    return await res.json()
 
 
async def downloadSong(session, rid, name, singer):
    url = f'http://www.kuwo.cn/api/v1/www/music/playUrl?mid={rid}&type=convert_url3&br=320kmp3'
    res = await session.get(url=url, headers=headers)
    res_json = await res.json()
    download_url = res_json['data']['url']
    response = await session.get(download_url, headers=headers)
    data = await response.content.read()
    async with aiofiles.open(f'music/{name}-{singer}.mp3', mode='wb') as f:
        logging.info(f"{name}-{singer}.mp3下载完成")
        await f.write(data)
 
 
async def main(song_name):
    async with aiohttp.ClientSession() as session:
        song_json = await searchSong(session, song_name)
        songs_info = song_json['data']['list']
        tasks = []
        for song_info in songs_info:
            name = song_info['name'].replace(' ', '').replace('へ-', '').replace('|', '')
            artist = song_info['artist']
            rid = song_info['rid']
            logging.info(f"歌曲名称:{name}|歌手:{artist}|id:{rid}")
            tasks.append(asyncio.create_task(downloadSong(session, rid, name, artist)))
        await asyncio.wait(tasks)
 
 
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main("满天星辰不及你"))

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

发表于 2022-5-14 09:58 | 显示全部楼层
多谢楼主分享

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

发表于 2022-5-14 10:43 来自手机 | 显示全部楼层
感谢大佬分享,大佬666666

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

发表于 2022-5-14 11:28 | 显示全部楼层
谢谢@Thanks!

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

发表于 2022-5-14 11:46 | 显示全部楼层
谢谢分享!

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

发表于 2022-5-14 11:46 | 显示全部楼层
6666

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

发表于 2022-5-14 12:01 | 显示全部楼层
谢谢大佬分享

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
大牛论坛所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: daniuluntan@qq.com

RSS订阅|家园|手机版|小黑屋|广告合作|大牛论坛 |我的广告

GMT+8, 2022-5-19 07:36 , Processed in 0.136665 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表