吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5428|回复: 97
收起左侧

[Python 原创] 歌曲爬取脚本

  [复制链接]
.Net_破解 发表于 2023-12-1 11:40
本帖最后由 .Net_破解 于 2023-12-1 11:42 编辑

注意:请勿用于商业用途,侵权请联系我删除,仅供学习交流使用

[Python] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import re
import os
import glob
import time
import json
import requests
from lxml import html
from urllib.request import quote
 
#这里是通过脚本导出的歌单列表
song = "石梅 - 错过的情人\n孙子涵 - 全世界宣布爱你\n张韶涵 - 看得最远的地方\n张韶涵 - 遗失的美好\n刘惜君 - 我很快乐\n牛奶咖啡 - 越长大越孤单\n张韶涵 - 亲爱的,那不是爱情\n王心凌 - 第一次爱的人\n弦子 - 醉清风\n程响 - 新娘不是我\n金莎 - 星月神话\n刘若英 - 后来\nSweety - 樱花草\n刘若英 - 当爱在靠近\n林忆莲 - 至少还有你\n六哲 - 我好喜欢你\n孙燕姿 - 开始懂了\n孙楠 - 只要有你\nCéline Dion - My Heart Will Go On\n山野(李昊瀚) - 很很很爱你\n范玮琪 - 最重要的决定\n弹棉花的小花 - 顿啦 爱你 (小花版)\n阿YueYue - 沈园外\nen - 其实都没有\n崔伟立 - 为你祈祷\n憨憨的橙子 - 闺蜜的话\n柯柯柯啊 - 姑娘别哭泣\n向思思 - 总会有人\n崔子格 - 卜卦\n侯泽润 - 一句先苦后甜\n周林枫 - 化作晚风拥抱你\n贝乐虎 - 勇气大爆发\n张茜 - 爱似水仙\n陈奕迅 - 孤勇者\n白小白 - 往后余生只爱你\n王忻辰 - 时间幻灭\n山野(李昊瀚) - 如果爱能早些说出来\n怪阿姨 - 累了痛了不爱了\n阿悠悠 - 一生与你擦肩而过\n旺仔小乔 - 春泥\n江肆 - 梦里梦外都是你\n周传雄 - 冬天的秘密\n杨坤 - 萱草花\n乔洋 - 你的烂借口\n黄品源 - 海浪\n杨千嬅 - 处处吻\n周华健 - 有没有一首歌会让你想起我\n伊格赛听 - 还是要分开\n洛先生 - 爱没有结果\n洛先生 - 江南寻你\n洛先生 - 如果我没爱过\n洛先生 - 爱没有结果\n洛先生 - 影子说\nF.I.R.飞儿乐团 - 我们的爱\n5音 - mojito\n汪苏泷 - 情歌\n阿YueYue - 寻屿\n周传雄 - 寂寞沙洲冷\n莫叫姐姐 - 不该用情\nBEYOND - 不再犹豫\n周杰伦 - 给我一首歌的时间\nLKer林柯 - 满目星辰皆是你\n棒棒堂 - 苦茶\n刘德华 - 一起走过的日子\n刘允乐 - 太早\n梁汉文 - 缠绵游戏\n张靓颖 - 想你,零点零一分\n吕口口 - 失忆\n胜屿 - 我们说好的\n胜屿 - 桃花酒\n胜屿 - 笑着结束\n胜屿 - 落叶的忧伤\n胜屿 - 劝退\nycccc - 消失人海\n陈小春 - 相依为命\n柳爽 - 漠河舞厅\n苏见信 (信) - 魂\n韦雄 - 根本你不懂得爱我\n黄霄雲 - 星辰大海\n王菲 - 如愿\n韩红 - 飞云之下\n小蓝背心 - 我怕来者不是你\n付豪 - 也很值得\n董书含 - 下一个天亮\nBEYOND - 无悔这一生\nG.E.M. 邓紫棋 - 再见\n海来阿木 - 五十年以后\n小阿七 - 五十年以后\n郁可唯 - 路过人间\n零一九零贰 - 忘川彼岸\n白小白 - 我爱你不问归期\nA1 TRIP - 放空\n朱添泽 - 想\n苏星婕 - 风吹过八千里\n朱添泽 - 想\n阿吉太组合 - 阿衣莫\n王富贵 - 情字最大\n洛先生 - 孤城\n刘兴宇 - 拥抱你的星河万里\n赵乃吉 - 曾经你说\n房东的猫 - New Boy\n杨小壮 - 最后的人\n陶喆 - 爱,很简单\n九局 - 刀山火海\n木杰 - 醉过多少回\n海伦 - 她很孤独\n王小乱 - 不挽留没回头\n毛阿敏 - 相思\nIN-K - 落日与晚风\n音决 - 累了痛了不爱了\n凤凰传奇 - 我从草原来\n韩可可 - 迷失在梦中\n刘涛 - 红颜旧\n虎二 - 窗\n程佳佳 - 别错过\n仇远旭 - 就是爱你\n李浩然 - 就是爱你\n上官红燕 - 玛尼情歌\n王赫野 - 大风吹\n大籽 - 白月光与朱砂痣\n朴惠子 - 盲童\n回小仙 - 醒不来的梦\n李浩然 - 一千零一次我爱你\n李宇春 - 和你一样\n刘惜君 - 菩提偈\n老光 - 有幸\n木风 - 某人\n程响 - 世界这么大还是遇见你\n阿冗 - 你的答案\n杨小壮 - 一个人挺好\nG.E.M. 邓紫棋 - 句号\n小阿枫 - 最远的你是我最近的爱\n小阿枫 - 心要让你听见\n小阿枫 - 2019抖音近期热播《小阿枫翻唱全集》连版车载\n吕口口 - 世间美好与你环环相扣\n吕口口 - 风度\n华晨宇 - 烟火里的尘埃\n黎林添娇 - 出现又离开\n许绍洋 - 花香\n汪苏泷 - 风度\n小倩 - 那个女孩\n张泽熙 - 那个女孩\n任盈盈 - 多年以后\n李代沫 - 这就是爱情\n阿悠悠 - 念旧\n熊孩子儿歌 - 我上幼儿园\n熊孩子儿歌 - 左手右手\n熊孩子儿歌 - 洗澡歌原唱版\n兔小贝 - 洗澡歌\n范晓萱 - 我爱洗澡\n王心凌 - 爱的天灵灵\n王心凌 - Honey\n王心凌 - 爱你\n六哲 - 让全世界知道我爱你\n大嘴巴 - 永远在身边\n黄品源 - 你怎么舍得我难过\nT-ara (티아라) - DAY BY DAY\n宇西 - 出现又离开\n匿名情书 - 她的眼睛会唱歌\n梦涵 - 17岁\n谢宇伦 - 夜半\nKatie Sky - Monsters\n半吨兄弟 - 爱情错觉\n半阳 - 一曲相思\n焦迈奇 - 我的名字\n李荣浩 - 年少有为\nIce Paper - 心如止水\n陈雪凝 - 你的酒馆对我打了烊\nG.E.M. 邓紫棋 - 来自天堂的魔鬼\n九局 - 我已经爱上你\n吴青峰 - 起风了\n蔡依林 - 说爱你\n杨胖雨 - 情深深雨濛濛\n王七七 - 我愿意平凡的陪在你身旁\nEd Sheeran - Shape of You\nHATO唱见组 - 盗将行\nSHAUN (숀) - Way Back Home\n简弘亦 - 不染\n张贤赫 - 囧架架\n张紫豪 - 可不可以\nJoel Adams - Please Don't Go\nCorki刘宗鑫 - 下坠Falling\n王大毛 - 去年夏天\n毛不易 - 牧马城市\n仇志 - 再也不会遇见第二个她\n李哈哈 - 再也不会遇见第二个她\n半阳 - 流浪\n郭聪明 - 你会遇见更好的人\n萧敬腾 - 梦一场\n烟把儿乐队 - 纸短情长\nChristine Welch - 一百万个可能\n菌菌酱 - 有可能的夜晚\nG.E.M. 邓紫棋 - 光年之外\n大壮 - 伪装\n古羽 - 醉仙美\n张信哲 - 别怕我伤心\n邓丽欣 - 电灯胆\n王力宏 - 缘分一道桥\n梁咏琪 - 胆小鬼\n小阿枫 - 心要让你听见\n魏新雨 - 余情未了\n艾辰 - 出山\n黄诗扶 - 九万字\n范玮琪 - 如果的事\n方雅贤 - 遇到\n蒋蒋 - 当真\n雷婷 - 撕夜\n鞠文娴 - 江海不渡你\n于晴 - 心如止水\n陈雪凝 - 绿色\n卓舒晨 - 走着走着花就开了\n秦岚 - 雪落下的声音\n展展与罗罗 - 沙漠骆驼\n赵传 - 我很丑,可是我很温柔\n马良 - 往后余生\n胡66 - 浪人琵琶\n曲肖冰 - 卡布奇诺\n蒙安 - 甜心\n王逗逗 - 小甜心\n李贰叁 - 往后余生\n胡66 - 天生难猜\n阳逸晨 - 小可爱\n冯提莫 - 佛系少女\n高安 - 花桥流水\n秋裤大叔 - 一晃就老了\n孙语赛 - 不仅仅是喜欢\n小潘潘(潘柚彤) - 学猫叫\n佳利 - 2799\n王乐乐 - 雨后人去楼也空\n刘辰希 - 专属情歌\n萌哥 - 行星\n诗人凉 - 白色桔梗花\n青蛙乐队 - 小跳蛙\n广东雨神 - 广东爱情故事\n孙子涵 - 我们之间\n周笔畅 - 最美的期待\nEd Sheeran - Shape of You\nTFBOYS - 我们的时光\n张北北 - 拥抱你离去\n毛不易 - 像我这样的人\nLambsey (ラムジ) - PLANET\n大壮 - 差一步\n林俊杰 - 可惜没如果\n林俊杰 - 醉赤壁\n于文文 - 体面\n鞠文娴 - BINGBIAN病变\n袁娅维TIA RAY - 说散就散\n周思涵 - 过客\n买辣椒也用券 - 起风了\n张凯 - 樱花树下的约定\n胡66 - 空空如也\nLuis Fonsi - Despacito\nMKJ - Time\n新乐尘符 - 123我爱你\nG.E.M. 邓紫棋 - Mascara\n祈Inory - 格斗宝贝\n李玉刚 - 刚好遇见你\n儿歌 - 拔萝卜\n吴淑敏 - 蜗牛与黄鹂鸟\n叶炫清 - 九张机\n任立佳 - 两个我们\n薛黛霏 - 非酋\n岑宁儿 - 追光者\n黑崎子 - 最美情侣\n刘大美人 - 你是我爱的人\n校长(张驰) - 过得好吗\n李朝 - 情话微甜\n阿冷 - 春风吹\n赵天宇 - 奇妙能力歌\n毛不易 - 消愁\n小贱 - 我的女人\n方大同 - 春风吹\n薛黛霏 - 欧皇\n神马乐团 - 爱河\n白小白 - 过去的照片\nDP龙猪 - 全部都是你\n校长(张驰) - 带你去旅行\n孙辉 - 没有车没有房\n熊孩子儿歌 - 小跳蛙\n李祥祥 - 原谅\n陈一发儿 ver. - 童话镇\n杨宗纬 - 凉凉\n迪丽热巴 - 舍不得\n郁可唯 - 夙念\n李溪芮 - 爱得起\n谢欣芷 - 幸福的孩子爱唱歌\n林妙可 - 爱我你就抱抱我\n艳菲儿 - 百变小公主\n许飞 - 不说再见\n白宇 - 沉眠\n蔡淳佳 - 依恋\n张碧晨 - 曾经守候\n小曲儿 - 小幸运\n曾轶可 - 有可能的夜晚\n潘美辰 - 我曾用心爱着你\n张赫 - 一笑倾城\n张碧晨 - 下一秒\nWalk Off the Earth - Summer Vibe\nMi2 - 爱\n梅雨萱 - 交换爱\n孙燕姿 - 遇见\n朱主爱 - 好想你\n华语群星 - 亲爱的小孩\n庄心妍 - 再见只是陌生人\n海生 - 情一动心就痛\n萌萌哒天团 - 帝都\n刘是非 - 带着我的爱嫁给他\n姜育恒 - 女人的选择\n杨颖 - 绿罗裙\n徐菲琳 - 小幸福\n韦萱 - 神武笑春风\n天佑 - 一人饮酒醉\n郝云 - 活着\n李荣浩 - 李白\n柯以敏 - 谢谢你让我这么爱你\n林俊杰 - 被风吹过的夏天\n林俊杰 - 期待你的爱\n汪苏泷 - 如果时光倒流\n程响 - 怎么能忘了\n徐梵溪 - 燃烧翅膀\n邱永传 - 何时才能让你说爱我\n威仔 - 不爱又何必纠缠\n海鸣威 - 一个人的北京\n魏新雨 - 恋人心\n高姗 - 遇见你的时候所有星星都落到我头上\n汪苏泷 - 某人\n王凌 - 情戏\n孙露 - 离别的秋天\n苏芮 - 是否\n陶钰玉 - 你是我的唯一"
song_list = song.split('\n')
failure_list = []
download_path = "download"
 
def get_mp3_files_name(folder_path):
    mp3_names = []
 
    # 遍历文件夹中的文件
    for filename in os.listdir(folder_path):
        # 检查文件是否是以.mp3结尾
        if filename.endswith(".mp3"):
            # 获取文件名(去掉后缀)并添加到链表中
            mp3_name = os.path.splitext(filename)[0]
            mp3_names.append(mp3_name)
 
    print(len(mp3_names))
 
    return mp3_names
 
def get_mp3_files_number(folder_path):
    # 构建匹配的文件路径模式
    pattern = os.path.join(folder_path, '*.mp3')
 
    # 使用 glob.glob 获取匹配的文件列表
    mp3_files = glob.glob(pattern)
 
    print(f"在文件夹 '{folder_path}' 中找到 {len(mp3_files)} 个 .mp3 文件。")
 
    # 返回文件个数
    return len(mp3_files)
 
##过滤调 list_a 中存在的 list_b中的元素
def filter_song_list(list_a,list_b):
    filtered_list_A = [item for item in list_a if item not in list_b]
 
    return filtered_list_A
 
def download_song(name,url):
    response = requests.get(url)
 
    save_path = "{}/{}.mp3".format(download_path,name)
 
    if response.status_code == 200:
        with open(save_path, 'wb') as file:
            file.write(response.content)
        print("下载完成")
    else:
        print(f"下载失败,状态码:{response.status_code}")
        failure_list.append(name)
 
def get_song(name):
 
    try:
        #获取时间戳
        timestamp = int(time.time())
        # 目标网页URL
        url = "http://www.22a5.com/so/{}.html".format(name)
        url = quote(url, safe=";/?:@&=+$,", encoding="utf-8")
 
        # 发送GET请求获取HTML内容
        response = requests.get(url)
        html_content = response.text
        # 解析HTML内容
        tree = html.fromstring(html_content)
 
        # 使用XPath表达式提取信息
        # 这里以提取标题为例
        title = tree.xpath('/html/body/div[1]/div/div[2]/ul/li[1]/div/a/@href')[0]
        # 定义请求头
        headers = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Connection': 'keep-alive',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Cookie': 'down_mima=ok; Hm_lvt_be42100b2d74ee4e1143740c9129e77e=1701335792,1701393498; Hm_lpvt_be42100b2d74ee4e1143740c9129e77e={}'.format(timestamp),
            'Host': 'www.22a5.com',
            'Origin': 'http://www.22a5.com',
            'Referer': 'http://www.22a5.com/{}'.format(title),
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.69',
            'X-Requested-With': 'XMLHttpRequest'
        }
 
        # 定义正则表达式
        pattern = r"/mp3/(\w+)\.html"
 
        # 使用 re 模块进行匹配
        match = re.match(pattern, title)
 
        # 提取匹配的部分
        if match:
            extracted_value = match.group(1)
             # 定义POST请求的数据
            data = {
                'id': extracted_value,
                'type': 'music'
            }
 
            #可能请求失败请求5次
            for i in range(5):
                # 发送POST请求
                response = requests.post('http://www.22a5.com/js/play.php', headers=headers, data=data)
 
                song_json = json.loads(response.text)
 
                if(song_json['url'] == ''):
                    if(i == 5):
                        print("下载失败:{}".format(name))
                        failure_list.append(name)
                    time.sleep(1)
                    continue
                else:
                    print("{}:{}".format(name,song_json['url']))
                    download_song(name,song_json['url'])
                    break
        else:
            print("下载失败:{}".format(name))
 
       
    except Exception as e:
        print("下载失败:{}".format(name))
        failure_list.append(name)
        print(str(e))
 
if __name__ == "__main__":
 
    if not os.path.exists(download_path):
        try:
            os.makedirs(download_path)
            print(f"文件夹 '{download_path}' 创建成功!")
        except OSError as e:
            print(f"创建文件夹 '{download_path}' 时出错:{e}")
 
    unique_list = list(set(song_list))  #去掉重复的
    remain_sond_list = filter_song_list(unique_list,get_mp3_files_name(download_path)) #去掉已经下载过的
 
    print("下载歌曲数量:{}".format(len(remain_sond_list)))
 
    for i in range(len(remain_sond_list)):
        get_song(remain_sond_list[i])
 
    with open("failure.txt","w+") as file:
        for item in failure_list:
            file.write(f"{item}\n")
 
    get_mp3_files_number(download_path)

免费评分

参与人数 13吾爱币 +18 热心值 +13 收起 理由
bf191 + 1 + 1 谢谢@Thanks!
魔幻冰扬 + 1 + 1 好网站,好音乐
renzhen1997 + 1 + 1 好网站,好音乐 爬虫不会玩
guoruihotel + 1 + 1 谢谢@Thanks!
无常gui + 1 + 1 我很赞同!
djmlxm + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
jcwoai + 1 + 1 热心回复!
cmojo + 1 + 1 谢谢@Thanks!
2595453382 + 1 + 1 谢谢@Thanks!
坐久落花多 + 1 + 1 用心讨论,共获提升!
1045837055lucy + 1 赶紧保存,没准什么时候就没有了。
xuesecnm + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bohong65 发表于 2023-12-1 11:58
网址收藏了批量爬取就算了,减小网站压力
phdlijing 发表于 2023-12-1 13:15
htxz2022 发表于 2023-12-1 12:20
wyh138 发表于 2023-12-1 11:57
代码结构很规范,让人查看很舒服,对小白很友好
 楼主| .Net_破解 发表于 2023-12-1 12:27
bohong65 发表于 2023-12-1 11:58
网址收藏了批量爬取就算了,减小网站压力

哈哈,里面做了延时的,就是数量太多,手动有点难受
utemdwiu 发表于 2023-12-1 13:09
收藏一下,以后能用
52soft 发表于 2023-12-1 13:18
有这么好的东东
FruitBaby 发表于 2023-12-1 14:01
刚试了一下,速度有点慢
fengliuyang 发表于 2023-12-1 14:28
不会做,但是支持
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-28 05:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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