当前位置: 首页 > news >正文

【Python趣味】:爬取音乐

import requests
from bs4 import BeautifulSoup
import csv
import time

# 配置信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

# 目标歌单URL
playlist_url = "https://music.163.com/playlist?id=714343781"

# 保存数据的CSV文件
output_file = "playlist.csv"

def get_playlist_info(url):
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 提取歌单标题
        title = soup.find('em', class_='f-ff2').text.strip()
        
        # 提取歌曲列表
        songs = []
        items = soup.find_all('li', class_='j-flag')
        for item in items:
            song_id = item.get('data-res-id')
            song_name = item.find('b').get('title')
            artist = item.find('div', class_='text').find('a').text.strip()
            songs.append({
                'song_id': song_id,
                'song_name': song_name,
                'artist': artist
            })
        
        return title, songs
    
    except Exception as e:
        print(f"Error: {e}")
        return None, None

def save_to_csv(data, filename):
    with open(filename, 'w', newline='', encoding='utf-8-sig') as csvfile:
        fieldnames = ['song_id', 'song_name', 'artist']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        
        writer.writeheader()
        for row in data:
            writer.writerow(row)

if __name__ == "__main__":
    print("开始爬取歌单信息...")
    start_time = time.time()
    
    title, songs = get_playlist_info(playlist_url)
    
    if title and songs:
        print(f"歌单名称: {title}")
        print(f"歌曲数量: {len(songs)}")
        save_to_csv(songs, output_file)
        print(f"数据已保存到 {output_file}")
    else:
        print("爬取失败")
    
    end_time = time.time()
    print(f"耗时: {end_time - start_time:.2f} 秒")

相关文章:

  • C# Winform 入门(2)之发送邮件
  • MyBatis基础五(动态SQL,缓存)
  • NFS 重传次数速率监控
  • xml中配置AOP织入
  • vxe-table 树表格启用树节点连接线的使用
  • 前端简单入门学习1——使用工具
  • 企业级NoSql数据库Redis集群
  • SQL Server 八大排序算法详解
  • 【Linux网络与网络编程】03.UDP Socket编程
  • Qt6调试项目找不到Bluetooth Component蓝牙组件
  • 实例中调用带有命名控件的成员
  • 判断一个字符串中排除空格和换行以外字符运行不同的逻辑
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day2
  • AIGC SD出图有缺陷有哪些方法可以解决?
  • nginx rewrite的相关功能
  • 算力100问☞第100问:算力竞争的关键领域?
  • 数据仓库建模-CIF方法中3NF建模的核心作用解析
  • “壹号土”和“壹号土猪”都是已注册商标!
  • MongoDB 核心机制解析
  • 深入解析力扣39.组合总和:回溯算法的妙用
  • 广州小企业网站制作/厦门人才网官网招聘信息网
  • 做天猫还是做网站推广/怎么让某个关键词排名上去
  • 网站建设工作的函/免费建一级域名网站
  • 城市建设网站鹤岗市/网站热度查询
  • 做网站 用什么做数据库最好/百中搜优化
  • 网站备案号查询/重庆疫情最新数据