爬虫学习(爬取音乐)

复制代码
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'))
相关推荐
一条泥憨鱼28 分钟前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
HY小宝F1 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
Go Work1 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记
深蓝电商API1 小时前
mitmproxy高级用法:自定义脚本拦截改包
爬虫·mitmproxy
ACP广源盛139246256732 小时前
HDMI2.0 转 DP1.4 桥接方案评估:国产 GSV2125C@ACP 芯片选型笔记
笔记·硬件架构·hdmi·type-c·国产芯片
虹科网络安全2 小时前
“顶会”看安全(十九):医疗 AI 中的差异化隐私风险
人工智能·经验分享·安全
龙仔7252 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记
Fluxproxy2 小时前
Python爬虫异步提速终极方案|线程池ThreadPoolExecutor实战,告别单线程慢速爬取
开发语言·爬虫·python
悟乙己2 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
霍霍的袁3 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio