爬虫——爬取小音乐网站

爬虫有几部分功能???

1.发请求,获得网页源码 #1.和2是在一步的 发请求成功了之后就能直接获得网页源码

2.解析我们想要的数据

3.按照需求保存

注意:开始爬虫前,需要给其封装

复制代码
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
}

爬虫分析:

第一步:从列表页抓取详情页面的链接

正则表达式:

复制代码
<li\sclass="media\sthread\stap\s\s".*?>.*?<div\sclass="subject\sbreak-all">.*?<a\shref="(.*?)">(.*?)</a>

得到如下结果

从以上结果可以看出,此链接不可直接点击,缺少https://www.hifini.com/这一部分

复制代码
https://www.hifini.com/thread-20945.htm

因此如下处理

for i in result:

print(i)#元祖下标取值

href = "https://www.hifini.com/"+i[0]

name = i[1]

print(href)

print(name)

print('======================')

第二步:获取歌曲播放资源

找到歌曲url的xpath:

复制代码
music:\s\[.*?title:\s'(.*?)',.*?url:\s'(.*?)'

代码:

复制代码
#解析歌曲的播放组员
song_re = "music:\s\[.*?title:\s'(.*?)',.*?url:\s'(.*?)'"
r = re.findall(song_re,song_html_data,re.S)
# print('歌曲信息',r)
for i in r:
    song_name = i[0]
    song_link = "https://www.hifini.com/"+i[1]
    print('歌名:',song_name)
    print("歌曲播放资源链接",song_link)
    print('++++++++++++++++')

第三步:再次像歌曲播放资源链接发请求 获得二进制数据,进行保存

1.创建文件夹

复制代码
#保存歌曲 先创建一个文件夹 导入os模块
#判断文件是否存在
if not os.path.exists('歌曲'):
    os.makedirs("歌曲")

2.创建文件流,将歌曲保存在文件夹中

复制代码
with open('歌曲\{}.m4a'.format(song_name),'wb')as f:
    f.write(data_bytes)

代码:

复制代码
import requests
import re
import os

shouye_url = 'https://www.hifini.com/'
# 1.起始目标
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
}
response = requests.get(shouye_url, headers=headers)
#1.发请求,获得网页源码
def get_data(url):
    response = requests.get(url,headers=headers)
    # print(response.status_code)
    # print(response.text)
    if response.status_code == 200:
        return response.text
#2.解析我们想要的数据
def parse_data(data):#形参站位 模拟的就是爬虫爬取下来的源码
    z ='<li\sclass="media\sthread\stap\s\s".*?>.*?<div\sclass="subject\sbreak-all">.*?<a\shref="(.*?)">(.*?)</a>'
    result = re.findall(z,data,re.S)
    # print(result)
    # https://www.hifini.com/thread-20945.htm
    for i in result:
        # print(i)#元祖下标取值
        href = "https://www.hifini.com/"+i[0]
        name = i[1]
        print(href)
        print(name)
        print('======================')
        get_song_link(href)
        #https://www.hifini.com/get_music.php?key=2Ydoqazb8E6jj+Nvl6rZLnuh3Fu1MRARle/srx5zQfZVMkPqsGrSzFHehon89oIENCUU19ru3GEJax60Ew
# 像详情页发请求 获得网页源码
def get_song_link(link):#link模拟的是详情页的url
    song_html_data = get_data(link)
    # print("详情页的网页源码",song_html_data)
    #解析歌曲的播放组员
    song_re = "music:\s\[.*?title:\s'(.*?)',.*?url:\s'(.*?)'"
    r = re.findall(song_re,song_html_data,re.S)
    # print('歌曲信息',r)
    for i in r:
        song_name = i[0]
        song_link = "https://www.hifini.com/"+i[1]
        print('歌名:',song_name)
        print("歌曲播放资源链接",song_link)
        print('++++++++++++++++')
        #再次像歌曲播放资源链接发请求 获得二进制数据
        data_bytes = requests.get(song_link,headers=headers).content
        # print(data_bytes)
        #保存歌曲 先创建一个文件夹 导入os模块
        #判断文件是否存在
        if not os.path.exists('歌曲'):
            os.makedirs("歌曲")
        with open('歌曲\{}.m4a'.format(song_name),'wb')as f:
            f.write(data_bytes)
#对应的功能写在不同的函数里面 如果需要互用功能 互相调用即可
if __name__ == '__main__':
    h = get_data(shouye_url)
    parse_data(h)

结果:

相关推荐
ZC跨境爬虫12 小时前
移动端爬虫工具Fiddler完整配置流程:PC+安卓模拟器全覆盖,零基础一次配置成功
android·前端·爬虫·测试工具·fiddler
HookJames14 小时前
恶意爬虫非常可恶,设置托管质询
爬虫
B站_计算机毕业设计之家2 天前
计算机毕业设计:Python股票投资辅助决策系统 django框架 request爬虫 协同过滤算法 数据分析 可视化 大数据 大模型(建议收藏)✅
爬虫·python·深度学习·算法·django·flask·课程设计
FlDmr4i282 天前
网络爬虫是自动从互联网上采集数据的程序
爬虫
源码之家2 天前
计算机毕业设计:Python股票交易管理可视化系统 Django框架 requests爬虫 数据分析 可视化 大数据 大模型(建议收藏)✅
爬虫·python·深度学习·信息可视化·数据分析·django·课程设计
篮子里的玫瑰3 天前
Python与网络爬虫——列表与元组
开发语言·爬虫·python
电商API_180079052473 天前
如何实现批量化自动化获取淘宝商品详情数据?爬虫orAPI?
大数据·c++·爬虫·自动化
源码之屋3 天前
计算机毕业设计:Python天天基金数据采集与智能分析平台 Django框架 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
人工智能·爬虫·python·数据分析·django·flask·课程设计
源码之家3 天前
计算机毕业设计:Python基金股票数据分析与可视化平台 Django框架 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
爬虫·python·信息可视化·数据分析·django·flask·课程设计
小花皮猪4 天前
2026 SERP + LLM 训练数据采集指南(Bright Data MCP + Dify)
人工智能·爬虫·工作流·dify·serp