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
目录
相关文章
|
4天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
7天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
22天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
66 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
26天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
4月前
|
Python
Python之音乐专辑管理系统
音乐专辑管理系统是一款用于管理和维护音乐专辑信息的应用程序,支持添加、删除、修改和查询专辑详情(如专辑名、艺术家、发行日期及曲目列表)。系统运行需Python 3.x环境,硬件要求较低,适合个人及小型团队使用。
93 4
|
5月前
|
Python
基于python-django的matlab护照识别网站系统
基于python-django的matlab护照识别网站系统
33 0
|
5月前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
56 0
|
6月前
|
数据采集 开发者 Python
Python之怎么爬取图片网站
Python之怎么爬取图片网站
|
6月前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
393 4
|
6月前
|
机器学习/深度学习 数据采集 人工智能
使用Python实现深度学习模型:智能音乐创作与生成
使用Python实现深度学习模型:智能音乐创作与生成
134 3

热门文章

最新文章

推荐镜像

更多