吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 6079|回复: 79

[其他] 【Python爬虫】喜马拉雅FM听书,陶冶情操,走向成功!-音频爬取,仅提供思路。

  [复制链接]
小涩席 发表于 2020-3-15 20:50 | 显示全部楼层 |阅读模式

如题,因为笔者想听书,但是又不想安装APP所以才有了这一段代码。
希望能给大家带来启发,也希望大佬能提出宝贵意见,谢谢!!!
最后声明:本代码仅供技术交流,请勿商用,如有侵权,请告知本人,本人立即删除。

[Python] 纯文本查看 复制代码
# -*- coding : 'UTF-8' -*-
# 喜马拉雅FM听书下载
# Author :XSX
# https://www.ximalaya.com/jiaoyu/29391994/p1/
# Python 3.8 PyCharm Community Edition 2019.3.3

import requests
from lxml import etree
import os
import time
import json

def Get_ID_Name(url, headers):
    Contents_IDS = []
    r = requests.get(url, headers=headers)
    r.encoding = r.apparent_encoding
    html = etree.HTML(r.text)
    Titles = html.xpath('//div[@class="sound-list _Qp"]/ul/li/div[2]/a/@title')
    Contents_lists = html.xpath('//div[@class="sound-list _Qp"]/ul/li/div[2]/a/@href')
    for Contents_list in Contents_lists:
        links_Cache = str(Contents_list).split('/')[-1]
        JsonURL = 'https://www.ximalaya.com/revision/play/v1/audio?id={}&ptype=1'.format(links_Cache)
        Contents_IDS.append(JsonURL)
    return Titles, Contents_IDS

def Json_Get_links(Contents_IDS, headers):
    Itemlists = []
    n = 0
    for Contents_ID in Contents_IDS:
        contents = {}
        time.sleep(1.5)
        r1 = requests.get(Contents_ID, headers=headers)
        r1.encoding = r1.apparent_encoding
        results = json.loads(r1.text)
        id = results['data']['trackId']
        m4alinks = results['data']['src']
        contents['ID'] = id
        contents['M4aLinks'] = m4alinks
        Itemlists.append(contents)
        n += 1
        print('已采集{}个链接!'.format(n))
    # print(Itemlists)
    return Itemlists

def DownLoadM4A(Itemlists, filename):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36',
        'If-None-Match': '"llN9ISnSdOkEmb835lC9NQ_j47Kl"',
        'Host': 'fdfs.xmcdn.com',
    }
    if not os.path.exists('./XMLYFM'):
        os.mkdir('./XMLYFM')
    count = 0
    for filename1, Itemlist in zip(filename, Itemlists):
        srclinks = Itemlist['M4aLinks']
        print(srclinks)
        r2 = requests.get(srclinks, headers=headers)
        print(r2.raise_for_status())
        with open('./XMLYFM/' + str(filename1) + '.m4a', 'wb')as f:
            f.write(r2.content)
            count += 1
            print('已下载{}个音频文件!'.format(count))
    print("{}个音频文件已全部下载完成!".format(count))

if __name__ == '__main__':
    print('正在加载...')
    url = 'https://www.ximalaya.com/jiaoyu/29391994/p1/'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
        'Cookie': '请换上自己的',
        'Referer': 'https://www.ximalaya.com/jiaoyu/29391994/p1/',
        'Host': 'www.ximalaya.com'
    }
    data1 = Get_ID_Name(url, headers)
    IDlinks = data1[1]
    fileName = data1[0]
    DownLoadM4A(Json_Get_links(IDlinks, headers), fileName)


数据示意图

数据示意图

评分

参与人数 12HB +9 THX +9 收起 理由
消逝的过去 + 1
创客者V2.0 + 1
微熊猫 + 1
agan8888 + 1
kway + 1
皮娜十 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
商朝电工 + 1
贰零贰贰 + 1 + 1
19861800008 + 1
快乐の神 + 2 + 1 [快捷评语]--你将受到所有人的崇拜!
HLearn + 1 [快捷评语]--你将受到所有人的崇拜!
wxfhf520 + 1 + 1 [快捷评语]--你将受到所有人的崇拜!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
weliong 发表于 2020-4-7 08:36 | 显示全部楼层

刚刚接触PYTHON,看到这种实用的程序,来观摩学习一下。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yeh1990118 发表于 2020-4-11 20:38 | 显示全部楼层

全新手小白前來參拜學習學習
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
W13144538163 发表于 2020-4-13 10:00 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
hai742477234 发表于 2020-4-27 20:35 来自手机端 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
水涧无形 发表于 2020-4-28 10:58 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
flyingfox 发表于 2020-5-17 01:31 | 显示全部楼层


小白学习学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
menyhai 发表于 2020-6-5 09:05 | 显示全部楼层

刚学PY的小白来学习,谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
wjdcq 发表于 2020-11-23 10:45 | 显示全部楼层

学习一下,谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
19861800008 发表于 2022-1-4 15:01 | 显示全部楼层

小白学习学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表