爬虫学习(爬取音乐)

复制代码
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'))
相关推荐
Hello_Embed7 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中7 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto8 小时前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h8 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡9 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
limengshi13839210 小时前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手10 小时前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
周周记笔记11 小时前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅11 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~11 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记