爬虫学习(爬取音乐)

复制代码
import re
import requests

url= "http://www.yy8844.cn/ting/numes/sussoc.shtml"
response = requests.get(url)
response.encoding = "gbk"
# print(r.text)
#第一步,访问网页获取MusicID
p = re.compile(r"MusicId=(.*?);",re.S)
print(re.search(p,response.text).group())

运行得到如下,获取到MusicId

复制代码
import re
import requests
import execjs
url= "http://www.yy8844.cn/ting/numes/sussoc.shtml"
response = requests.get(url)
response.encoding = "gbk"
# print(r.text)
#第一步,访问网页获取MusicID
p = re.compile(r"MusicId=(.*?);",re.S)
music_id = re.search(p,response.text).group(1)
#第二步 nodejs生成mp3 url
with open('m.js',encoding='utf-8') as f:
    ctx = execjs.compile(f.read())
    t = ctx.call("info", music_id)
    print(t)
#第三步 访问mp3 url,下载MP3并保存

function info(MusicId){
        var surl = "http://96.ierge.cn/";
        nurl = parseInt(MusicId / 30000) + "/" + parseInt(MusicId / 2000) + "/" + MusicId + ".mp3";
        fin_url = surl + nurl
        return fin_url
}
复制代码
import re
import execjs
import requests
from bs4 import BeautifulSoup as bs

def download_mp3(url,name):
    response = requests.get("http://www.yy8844.cn/"+url)
    response.encoding = "gbk"
    # print(r.text)
    # 第一步,访问网页获取MusicID
    p = re.compile(r"MusicId=(.*?);", re.S)
    music_id = re.search(p, response.text).group(1)
    # 第二步 nodejs生成mp3 url
    with open('m.js', encoding='utf-8') as f:
        ctx = execjs.compile(f.read())
        url = ctx.call("info", music_id)

        # 第三步 访问mp3 url,下载MP3并保存
        mp3_content = requests.get(url)
        with open(name+".mp3", "wb") as w:
            w.write(mp3_content.content)  # 获取文件(文件是二进制格式)并写入文件里


def get_index():
    url = "http://www.yy8844.cn/"
    headers = {
        "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0"
    }
    r = requests.get(url, headers=headers)
    r.encoding = "gbk"
    fin_result = re.findall(r'<a href="(.*?)" target=\'musiclisten\'>(.*?)</a>', r.text)
    for i in fin_result:
        download_mp3(i[0],i[1])
        print("正在下载{}".format(i[1]))
        print("下载完成")

if __name__ == '__main__':
    get_index()

# soup = bs(r.text,'html.parser')
# print(soup.find_all(Class='link2'))
相关推荐
Wentao Sun10 分钟前
致敬软件创业者2026
笔记·程序人生
架构师沉默17 分钟前
这个问题,决定你能不能进大厂!
经验分享
ZH154558913136 分钟前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
软件检测小牛玛36 分钟前
软件功能测试机构推荐:资质权威,报告认可的软件测评机构 中承信安
经验分享·软件功能测试·第三方软件检测·软件测评机构·软件功能测试报告
编程小白20261 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要1 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓1 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
方见华Richard1 小时前
方见华个人履历|中英双语版
人工智能·经验分享·交互·原型模式·空间计算
酒鼎1 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
acrelwwj2 小时前
智慧照明新引擎,ASL600 4GWJ开启城市照明精细化管理新时代
大数据·经验分享·物联网