吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6092|回复: 22
收起左侧

[Python 转载] Python简易爬虫——爬取某马拉雅音频

  [复制链接]
frank10010 发表于 2019-1-2 20:22
本帖最后由 frank10010 于 2019-1-4 15:09 编辑

闲来没事,爬点东西玩,简单爬虫,大佬们勿笑。。。
友情提示:用此代码前要先解决此爬虫的依赖包,使用前先下载requests,bs4,lxml包。方法是:
pip3 install requests
pip3 install bs4
pip3 install lxml
废话不多说,直接上代码。。。
如有其它疑问,看到后会回复。。。
暂不能爬取付费音频。。。
[Python] 纯文本查看 复制代码
# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
爬取X马拉雅音频
"""
import requests
import os
from bs4 import BeautifulSoup
from multiprocessing import Pool


headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0"}


def get_audio_list(page_num):
    """
    获取当前页面音频的ID号以便下面操作
    """
    url = 'https://www.ximalaya.com/youshengshu/4256765/p%s/'
    id_list = []
    for num in range(1, page_num+1):
        text = requests.get(url=url % num, headers=headers).text
        bs = BeautifulSoup(text, 'lxml')
        href_tag_list = bs.find('div', attrs={'class': 'sound-list rC5T'}).find_all('a')
        id_list += [i.get('href').split('/')[-1] for i in href_tag_list]
    return [i for i in id_list if i != '']


def get_audio(url, file_name):
    """
    下载音频文件
    """
    bin_content = requests.get(url).content
    audio_file = os.path.join('audio', file_name)
    with open(audio_file, 'wb') as f:
        f.write(bin_content)


def get_source(source_url):
    """
    获取某音频ID的json信息并下载
    """
    json_dict = requests.get(source_url).json()
    audio_url = json_dict.get('play_path')
    audio_title = json_dict.get('title')
    audio_name = f'{audio_title}.mp3'
    get_audio(audio_url, audio_name)


if __name__ == '__main__':
    os.mkdir('audio')
    pool = Pool(4)
    for page_num in range(1, 18):
        audio_list = get_audio_list(page_num)
        for file_id in audio_list:
            json_url = f'http://m.ximalaya.com/tracks/{file_id}.json'
            obj = pool.apply_async(func=get_source, args=(json_url,))
        pool.close()
        pool.join()
    print('资源下载完成')





免费评分

参与人数 3吾爱币 +5 热心值 +3 收起 理由
jmxxzpc + 1 + 1 谢谢@Thanks!
niebaohua + 1 + 1 付费的可以下吗
李玉风我爱你 + 3 + 1 我很赞同!

查看全部评分

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

 楼主| frank10010 发表于 2019-1-16 17:41
ccraker 发表于 2019-1-16 11:28
[mw_shl_code=python,true]return
这里的i是list,用!=''这种方式来比较是否为空好像不太合适[/mw_shl_co ...

i是字符串,你试试
ccraker 发表于 2019-1-16 11:28
[Python] 纯文本查看 复制代码
return [i for i in id_list if i != '']
这里的i是list,用!=''这种方式来比较是否为空好像不太合适
头像被屏蔽
yike911 发表于 2019-1-2 20:37
Norton 发表于 2019-1-2 20:43
楼主给力,学习一下。
仓鼠666 发表于 2019-1-2 21:24
最近在学python,正好来学习下
浮尘云烟 发表于 2019-1-2 21:28
进来学习
唯一笑解千愁 发表于 2019-1-2 21:33
最近在学python,正好来学习下.......
galaxyone 发表于 2019-1-2 21:39 来自手机
支持一下。学习学习
Pers丶零 发表于 2019-1-2 21:40
如果能爬去付费音频就好了,支持!
yxh5120 发表于 2019-1-2 21:45
学习学习。。。
leowhoo 发表于 2019-1-2 22:48
感谢分享,学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-6-1 22:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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