c语言编程笔录

首页 >   > 笔记大全

笔记大全

利用python爬虫实现爬取网易云音乐热歌榜

更新时间:2023-12-16

前言

随着大数据的兴起与互联网技术向社会的全面渗透,网络爬虫已经成为了很多网站和公司进行数据分析和获取的重要手段。Python作为一门快速发展的编程语言已经成为了网络爬虫界的一个“标配”,具备了方便、易用、高效、健壮的特点。本文将介绍如何通过Python爬虫实现网易云音乐热歌榜的爬取,并解释代码的用途和规范。

第一部分:解析网易云音乐热歌榜页面

首先,通过分析网易云音乐热歌榜页面的html代码,我们可以发现歌曲信息都包含在class为“m-table-rank”的table标签里。因此,我们可以采用Python中的BeautifulSoup库对该页面进行解析,获取歌曲相关信息。

import requests
from bs4 import BeautifulSoup

# 获取网页信息
url = 'https://music.163.com/discover/toplist?id=3778678'
r = requests.get(url)
html = r.text
soup = BeautifulSoup(html, 'html.parser')

# 歌曲信息提取
song_list = []
table = soup.find('table', {'class': 'm-table-rank'})
tbody = table.find('tbody')
trs = tbody.find_all('tr')
for tr in trs:
    song_dict = {}
    song_dict['rank_num'] = tr.find('td', {'class': 'rank'}).text.strip()
    song_dict['song_name'] = tr.find('b', {'class': 'txt'}).text.strip()
    song_dict['artist'] = tr.find('span', {'class': 's-fc8'}).text.strip()
    song_list.append(song_dict)

第二部分:将歌曲信息保存到数据库中

在获取到歌曲信息后,我们需要将这些信息保存到数据库中以便于后续的分析。在这里,我们使用MySQL数据库存储歌曲信息。首先,我们需要在本地安装好MySQL数据库,并创建好用于存储歌曲信息的表单。然后,我们使用Python中的PyMySQL库来连接MySQL数据库,并将获取到的歌曲信息插入相应的表单中。

import pymysql

# MySQL数据库连接
conn = pymysql.connect(host='localhost', port=3306, user='root', password='******', database='mydb')
cursor = conn.cursor()

# 数据库插入操作
for song in song_list:
    rank_num = song['rank_num']
    song_name = song['song_name']
    artist = song['artist']
    sql = "INSERT INTO song_list(rank_num, song_name, artist) VALUES (%s, %s, %s)"
    try:
        cursor.execute(sql, (rank_num, song_name, artist))
        conn.commit()
    except:
        conn.rollback()

conn.close()

第三部分:将歌曲信息输出到Excel文件中

除了将歌曲信息保存到数据库中,我们还可以将获取到的歌曲信息输出到Excel文件中。在这里,我们使用Python中的openpyxl库来完成Excel文件的读写操作。

import openpyxl

# 创建Excel文件
wb = openpyxl.Workbook()
sheet = wb.active

# 表头信息
sheet['A1'] = '排名'
sheet['B1'] = '歌名'
sheet['C1'] = '歌手'

# 写入歌曲信息
row = 2
for song in song_list:
    sheet.cell(row=row, column=1, value=song['rank_num'])
    sheet.cell(row=row, column=2, value=song['song_name'])
    sheet.cell(row=row, column=3, value=song['artist'])
    row += 1

# 保存Excel文件
wb.save('song_list.xlsx')

第四部分:总结

本文介绍了如何使用Python爬虫实现网易云音乐热歌榜的爬取。通过分析网页的html代码,我们使用BeautifulSoup库解析网页获取到歌曲信息,并将信息保存到MySQL数据库和Excel文件中。其中,MySQL数据库和Excel文件的操作可以快速进行数据分析。另外,在实际的网站数据采集中,我们需要注意反爬虫策略并遵守相应的道德和法律规范。