• Python案例:获取music榜单数据,保存自己的music库


    前言

    嗨喽~大家好呀,这里是魔王呐 ❤ ~!

    本次知识点:

    • 爬虫基本流程

    • requests的使用

    • 正则表达式的使用

    开发环境:

    • 解释器: python 3.8

    • 编辑器: pycharm 2022.3 专业版

    第三方模块使用

    • requests >>> 发送请求的模块

    第三方模块安装:

    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

    2. 在pycharm中点击Terminal(终端) 输入安装命令

    如果出现爆红, 可能是因为 网络连接超时, 可切换国内镜像源,命令如下:

    pip install -i https://pypi.doubanio.com/simple/ requests
    
    • 1

    python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

    代码展示

    导入模块

    import requests     
    import re
    
    • 1
    • 2

    模拟伪装

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
    }
    
    • 1
    • 2
    • 3

    请求链接

    url = 'https://*****/discover/toplist'
    
    • 1

    发送请求

    response = requests.get(url, headers=headers)
    
    • 1

    获取数据

    html_data = response.text
    
    • 1

    解析数据

    info_list = re.findall('
  • (.*?)
  • '
    , html_data) print(info_list) # 将每一首歌曲的id和名称 挨个取出来 for info in info_list: music_id = info[0] music_name = info[1] print(music_id, music_name) music_url = 'http://****/song/media/outer/url?id=' + music_id 源码、解答、教程+V:pytho8987获取 music_info_url = 'https://music.163.com/song?id='+music_id text = requests.get(music_info_url, headers=headers).text img_url = re.findall('', text)[0] print(img_url) img_data = requests.get(img_url).content f = open(rf'C:\Users\Administrator\Desktop\music\{music_name}-{music_id}.jpg', mode='wb') f.write(img_data)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    保存数据

        # music_data = requests.get(music_url).content
        # # 创建一个音乐文件
        # # mode='wb': 以二进制的方式写入数据
        # f = open(rf'C:\Users\Administrator\Desktop\music\{music_name}-{music_id}.mp3', mode='wb')
        # # 写入数据
        # f.write(music_data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    括展小知识

    一、什么是正则?

    搜索功能的一种 不是普通的搜索功能

    .: 替代一个字符

    *: 匹配前面表达式 多次

    .*: 匹配任意字符多次

    ?: 非贪婪匹配符

    (): 我只需要()里面的内容

    正则 我们知道数据的开头 和结尾 我们就能匹配到数据内容

     <li><a href="/song?id="></a></li>
     <li><a href="/song?id="></a></li>
     <li><a href="/song\?id=.*?">.*?</a></li>
    
    • 1
    • 2
    • 3

    二、

    正常 没有问题的情况 仅仅代表请求成功

    不能代表你一定能拿到数据

    尾语 💝

    要成功,先发疯,下定决心往前冲!

    学习是需要长期坚持的,一步一个脚印地走向未来!

    未来的你一定会感谢今天学习的你。

    —— 心灵鸡汤

    本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

    👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

  • 相关阅读:
    【前端验证】通关寄存器与ral_model —— 在uvm验证平台中连接ral_model并发起读写操作
    项目初始配置-gitee关联
    23种设计模式——工厂模式
    安防设施搭建使用
    计算机自顶向下
    CSS实现文字闪动效果
    windows10系统下指定用户配置FTP服务器及多用户登录
    2014年亚太杯APMCM数学建模大赛A题无人机创造安全环境求解全过程文档及程序
    生产者消费者问题
    跨域与JSONP
  • 原文地址:https://blog.csdn.net/python56123/article/details/130894786