Python 采集某网站音乐

简介: Python 采集某网站音乐

主要技术就是bs4

import json
import os
import time
import requests
from bs4 import BeautifulSoup
from access.sprider.SpriderAccess import SpriderAccess
from base.BaseConfig import BaseConfig
from base.BaseFrame import BaseFrame
from object.entity.SpriderEntity import SpriderEntity
from plugin.Tools import Tools
class QianQian:
    base_url = "http://music.taihe.com/"  # 采集的网址
    sprider_url = ["dayhot", "new", "netsong", "oldsong"]
    save_path = BaseConfig().CORPUS_ROOT + os.sep + "BaiduMusic"
    def __init__(self):
        pass
    def sprider_top(self, rege=True, xinge=True, wangluo=True, laoge=True):
        """
        采集热榜音乐
        :return:
        """
        self.base_url = self.base_url + "top" + "/"
        BaseFrame.__log__("开始采集热榜音乐" + self.base_url)
        for url in self.sprider_url:
            if rege is False:
                if url == "dayhot":
                    continue
            if xinge is False:
                if url == "new":
                    continue
            if wangluo is False:
                if url == "netsong":
                    continue
            if laoge is False:
                if url == "oldsong":
                    continue
            url = self.base_url + url
            response = requests.get(url)
            response.encoding = 'utf-8'
            soup = BeautifulSoup(response.text, "html5lib")
            a_list = soup.find_all('a', attrs={"data-film": 'null'})
            for a in a_list:
                songid = str(a.get("href")).replace("/song/", "")
                title = a.get("title")
                mmEntity = SpriderEntity()  # 依据图片执行,下载过的图片不再下载
                mmEntity.sprider_base_url = self.base_url
                mmEntity.create_datetime = Tools.get_current_datetime()
                mmEntity.sprider_url = url
                mmEntity.sprider_pic_title = title
                mmEntity.sprider_pic_index = songid
                if SpriderAccess().query_sprider_entity_by_urlandindex(url, songid) is None:
                    SpriderAccess().save_sprider(mmEntity)
                    self.get_mp3_address_and_download(songid, title)
                else:
                    BaseFrame.__log__(title + ".mp3 数据采集过因此跳过")
            pass
        BaseFrame.__log__("热榜音乐采集完毕!!!")
    def get_mp3_address_and_download(self, songid, title):
        """
        下载MP3音乐
        :param songid: MP3地址ID
        :param title: 音乐名称
        :return:
        """
        BaseFrame.__log__("正在下载" + title)
        try:
            apiurl = "http://musicapi.taihe.com/v1/restserver/ting"
            callback = "jQuery17200943498528136486_" + str(round(time.time() * 1000))
            hua = str(round(time.time() * 1000))
            params = {"method": "baidu.ting.song.playAAC", "format": "jsonp", "songid": songid, "from": "web",
                      "callback": callback, "_": hua}
            text = json.loads(requests.get(apiurl, params=params).text.split(callback)[1][1:-2])
            song_address = text["bitrate"]["file_link"]
            save_path = self.save_path + os.sep + title + ".mp3"
            Tools.judge_diskpath_exits_create(self.save_path)
            mp3w = open(save_path, 'wb')
            mp3w.write(requests.get(song_address).content)
            mp3w.close()
        except Exception as e:
            BaseFrame.__log__("下载音乐过程出现错误" + str(e))
            return
    def save_mp3_record(self, ):
        pass
if __name__ == '__main__':
    QianQian().sprider_top()
    pass
目录
相关文章
|
1月前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
2月前
|
数据采集 数据可视化 数据挖掘
Python爬虫实战:抓取网站数据并生成报表
本文将介绍如何使用Python编写简单而高效的网络爬虫,从指定的网站上抓取数据,并利用数据分析库生成可视化报表。通过学习本文内容,读者将能够掌握基本的爬虫技术和数据处理方法,为日后开发更复杂的数据采集与分析工具打下坚实基础。
|
2月前
|
前端开发 关系型数据库 MySQL
基于python+mysql的宠物领养网站系统
基于python+mysql的宠物领养网站系统
37 2
|
2月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
2天前
|
人工智能 Python
beets,一个有趣的 Python 音乐信息管理工具!
beets,一个有趣的 Python 音乐信息管理工具!
11 4
|
17天前
|
JavaScript 搜索推荐 前端开发
音乐发现平台:借助Python和Vue构建个性化音乐推荐系统
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建个性化音乐推荐系统。首先确保安装Python、Node.js、数据库系统和Git。后端可选择Flask或Django搭建RESTful API,处理歌曲数据。前端利用Vue.js创建用户界面,结合Vue CLI、Vuex和Vue Router实现功能丰富的SPA。通过Vuex管理状态,Axios与后端通信。这种前后端分离的架构利于协作和系统扩展,助力打造定制化音乐体验。
|
25天前
|
前端开发 测试技术 数据库
【python】为什么使用python Django开发网站这么火?
【python】为什么使用python Django开发网站这么火?
|
25天前
|
JSON 网络协议 前端开发
【UR六轴机械臂源码】python脱离示教器控制UR机械臂实时采集机器人位姿(优傲机器人)
【UR六轴机械臂源码】python脱离示教器控制UR机械臂实时采集机器人位姿(优傲机器人)
|
1月前
|
Python
如何利用Python下载酷狗音乐
如何利用Python下载酷狗音乐
38 0
|
1月前
|
存储 开发者 Python
Python项目实战案例-批量下载网易云榜单音乐保存至本地
Python项目实战案例-批量下载网易云榜单音乐保存至本地
37 1