python喜马拉雅爬虫简单实现(超详细注释)

本文介绍了使用Python爬虫技术从喜马拉雅网站上抓取并下载《盗墓笔记》专辑中的音频资源的过程,包括设置User-Agent、获取资源ID、解析URL和保存文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没啥就是闲着,爬了爬盗墓笔记


import requests
import re
import os


root_url="https://www.ximalaya.com/album/8625924"   #待爬取网站
folder_path=r"在这里填文件保存的地址"     #注意在文件路径前一定要写上r,不然会报错
                                                                        # SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

# 创建想把资源存往的文件夹(如果不存在)
os.makedirs(folder_path, exist_ok=True)

passcard={
"User-Agent":"这里填你的浏览器证书"
}   #passcard用于伪装身份,防止网站反爬

yuan_ma=requests.get( root_url, headers=passcard ).text    #text是因为获取的网页源码都是text格式

value = re.findall('"trackId":(\d+),"isPaid":false,"tag":0,"title":"(.*?)",',yuan_ma) 
#用正则表达式寻找符合条件的,找到不同资源的id和名字,输出列表套元组
# 在上面的正则表达式中,只会返回trackid和title里的东西,其他只是筛选条件,不返回的

for item in value:
        name=f"{item[1]}.m4a"   #资源的名字
        id=item[0]      #资源的id
        
        audio_url=f"https://www.ximalaya.com/revision/play/v1/audio?id={id}&ptype=1"   #audio文件的地址
        data=requests.get(audio_url,headers=passcard).json()      #访问audio文件,应为audio文件是json格式,将服务器返回的JSON格式的数据解析为字典data
        last_url=data["data"]["src"]                   #从audio文件(现在已经返回为data)中获取文件的真实地址
        response = requests.get(last_url).content      #访问真实地址,把资源写入response
        
        # 构造保存文件的完整路径
        file_name = os.path.join(folder_path, name)
        
        
        #写入文件
        with open(file_name, "wb") as file:
            file.write(response)
            print("已获取%s"%item[1])

值得注意的是,我发现喜马拉雅的资源地址不是固定的。也就是说上面代码里的网页资源地址需要重新获取。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值