【Python3 爬虫学习笔记】爬取喜马拉雅《宝宝巴士-奇妙三字经》

最近发现,娃喜欢睡觉之前听《三字经》,又不想给他玩手机,遂起心将喜马拉雅FM上的音频下载下来的想法。
在网上搜到了一篇文章,介绍了如何爬取:https://blog.csdn.net/majiexiong/article/details/81949388
但是一试之下发现没有爬取成功,打开https://www.ximalaya.com/ertong/15161417/的源码,发现网页源码改了,原文中的类名为dOi2的ul的类名被改为了rC5T

href_list = html_ele.xpath('//ul[@class="dOi2"]/li/div[2]/a/@href')

只要将原文中的类名改掉,运行程序便可以得到格式为m4a的音频文件。

import requests
from lxml import etree
from urllib import request
import os
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
}
url = 'https://www.ximalaya.com/ertong/15161417/'  # 由于音频专辑比较少,第二页的在后面加个p2/即可爬取第二页的音频
response = requests.get(url,headers=headers)
html_str = response.text
 
html_ele = etree.HTML(html_str)
 
href_list = html_ele.xpath('//ul[@class="rC5T"]/li/div[2]/a/@href')
if not os.path.exists('mjx'):
    os.mkdir('mjx')
 
for href in href_list:
 
    next_href = href.split('/')[-1]
 
    xiangqing_url = 'https://www.ximalaya.com/revision/play/tracks?trackIds=' + str(next_href)
    print(xiangqing_url)
    response = requests.get(xiangqing_url,headers=headers)
 
    json_dict = response.json()
 
    src_str = json_dict['data']['tracksForAudioPlay'][0]['src']
    trackName = json_dict['data']['tracksForAudioPlay'][0]['trackName']
    request.urlretrieve(src_str,'mjx/'+ trackName + '.m4a')

再找个格式转换软件,即可得到mp3格式的音频文件,搞定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值