• 只用二十行代码,用Python实现获取网抑云榜单文件保存本地,非常简单...


    序言

    哈喽,大家好,今天咱们试试只用20行代码来实现批量获取网抑云文件保存本地,炒鸡简单!

    悄悄的告诉你,其实不到20行代码~

    你需要准备

    本次使用的环境是Python3.8,编辑器是pycharm ,没有安装的小伙伴,看我置顶文章有教程。

    模块使用的是requests、re、os 三个,其中requests是第三方模块,需要手动安装一下,re、os都是内置模块,不需要安装。

    pip install requests 即可,不会安装的我置顶文章也有详细教程,这里就不过多讲了。

    或者直接在文章末尾点名片拿一下软件和安装教程也是可以的。

    浏览器开发者工具

    对于实现爬虫而言,咱们需要学会如何使用开发者工具。对此很多小伙伴都不会,因为每个浏览器的开发者工具细节上多少有一些差别,我建议都用谷歌浏览器,英文看不懂的话可以调成中文。

    打开开发者工具,点击省略号,点击 shortcuts

    在这里插入图片描述

    依次点击 preferences - language ,直接拉到最下方选择中文即可。

    代码实现

    本次实现步骤大致分为以下五步:

    1. 发送请求
    2. 获取数据
    3. 解析数据
    4. 保存数据

    这里我就不讲怎么分析开发者工具了,下次做一个详细的教程,讲解开发者工具。

    模块导入

    import requests  # 数据请求模块
    import re  # 正则表达式模块
    import os   # 文件操作模块
    
    • 1
    • 2
    • 3

    发送请求

    url = 'https://music.163.com/discover/toplist?id=3778678'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    获取数据

    result = re.findall('
  • (.*?)
  • '
    , response.text) for music, title in result: music_url = f'http://music.163.com/song/media/outer/url?id={music}.mp3' music_content = requests.get(url=music_url, headers=headers).content
    • 1
    • 2
    • 3
    • 4

    保存数据

    with open(filename + title + '.mp3', mode='wb') as f:
        f.write(music_content)
        print(title)
    
    • 1
    • 2
    • 3

    当然这只是最简单的爬取榜单音乐,评论、歌词等等都可以爬取,还有制作词云图、通过搜索下载,音乐下载器,等等各种实现下载的方式。

    好了,今天的分享就到这里,完整代码下方名片获取哈~

    推荐一套教程:代码总是学完就忘记?100个爬虫实战项目!让你沉迷学习丨学以致用丨下一个Python大神就是你!

  • 相关阅读:
    elk+logback实现SpringBoot日志分布式收集
    乾坤基础教程
    【2022黑马程序员】SQL优化
    Linux aarch64交叉编译之 mesa图形库
    A Survey of Deep Learning-based Object Detection
    【Spring Boot】常用参数与注解
    正则表达式与字符串操作
    Git常用基本指令学习
    Stream + 并行流 +Optional +接口的方法 +日期组件+重复注解及类型注解
    初学者入门编程最开始要学什么?
  • 原文地址:https://blog.csdn.net/fei347795790/article/details/126468372