吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10707|回复: 50
收起左侧

[Python 转载] 爬取喜马拉雅

  [复制链接]
ChinaLee 发表于 2020-8-22 19:47
本帖最后由 ChinaLee 于 2020-8-27 19:43 编辑



爬取喜马拉雅有声小说音频
如需要下载VIP资源需要填入VIP cookies

[Python] 纯文本查看 复制代码
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/gerenchengzhang/29391994/'
    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/gerenchengzhang/29391994/',
        'Host': 'www.ximalaya.com'
    }
    data1 = Get_ID_Name(url, headers)
    IDlinks = data1[1]
    fileName = data1[0]
    DownLoadM4A(Json_Get_links(IDlinks, headers), fileName)

2.png 1.png
感谢评分!

免费评分

参与人数 8吾爱币 +12 热心值 +7 收起 理由
清华必修 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
MSOLX + 1 + 1 我很赞同!
virs520 + 1 + 1 我很赞同!
开创者 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yjn866y + 1 + 1 我很赞同!
Joxing + 1 + 1 热心回复!
wangvipxxx + 1 + 1 <font style="vertical-align: inherit;"><font style=

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

天狼特工 发表于 2020-9-17 10:36
本帖最后由 天狼特工 于 2020-9-17 10:50 编辑

微信图片_20200917104939.png
是我哪里搞错了么?
我没理解错的话,应该是改下面的代码吧?
if __name__ == '__main__':
    print('正在加载...')
    url = 'https://www.ximalaya.com/gerenchengzhang/29391994/'
    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/gerenchengzhang/29391994/',
        'Host': 'www.ximalaya.com'
Cookie这里的格式是怎样的?要不要加1&_token=
cmbrun 发表于 2020-9-4 08:04
  File "C:\Python27\lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
chenqin37 发表于 2020-8-22 20:07
很想知道如何运行的,但目前的我还完全看不懂代码
正己 发表于 2020-8-22 20:10
chenqin37 发表于 2020-8-22 20:07
很想知道如何运行的,但目前的我还完全看不懂代码

直接复制代码在pycharm里运行,至于怎么安装,建议b站,有很详细的教程
winson365 发表于 2020-8-22 20:11
楼主大神不能打个包啊,谢谢了
chenqin37 发表于 2020-8-22 20:14
正己 发表于 2020-8-22 20:10
直接复制代码在pycharm里运行,至于怎么安装,建议b站,有很详细的教程

谢谢解答,正有学习python的打算,但迟迟没开始
a2217963 发表于 2020-8-22 20:25
我没有,想要[阿库娅_哭了]
M_SIR 发表于 2020-8-22 20:26
No module named 'requests' bs4  json  os  openpyxl
这是什么情况?
TangGuoguo 发表于 2020-8-22 20:27
感谢分享0.0
小笠原翔子 发表于 2020-8-22 20:33
正好在自学python
haiyangnanzi 发表于 2020-8-22 20:51
大神,这个太专业了,只有艳羡的份
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 06:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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