用MySQL爬取网易云热歌排行榜top200包括歌曲名歌手和歌曲类型并写入数据库
时间: 2024-06-08 20:10:07 浏览: 192
这里提供一种思路:
1. 分析网易云热歌排行榜的URL,获取其API接口。
2. 使用Python爬虫访问API接口,获取热歌排行榜的数据。
3. 解析数据,提取出所需的歌曲名、歌手和歌曲类型信息。
4. 连接MySQL数据库,将数据写入对应的表中。
具体实现步骤如下:
1. 分析网易云热歌排行榜的URL,获取API接口。可以通过浏览器开发者工具查看网页源代码,找到对应的API接口。以当前(2021年6月)的网易云热歌排行榜为例,API接口为:https://interface3.music.163.com/api/playlist/detail?id=3778678
2. 使用Python爬虫访问API接口,获取热歌排行榜的数据。可以使用requests库发起GET请求,获取API接口返回的JSON格式数据。代码如下:
```python
import requests
url = 'https://interface3.music.163.com/api/playlist/detail?id=3778678'
response = requests.get(url)
data = response.json()
```
3. 解析数据,提取出所需的歌曲名、歌手和歌曲类型信息。可以使用JSON解析库(如json)对数据进行解析,提取出所需的信息。代码如下:
```python
# 定义一个空列表,用于存储歌曲信息
songs = []
# 遍历每个歌曲信息,提取出所需的信息
for track in data['result']['tracks']:
name = track['name'] # 歌曲名
artists = ','.join([artist['name'] for artist in track['artists']]) # 歌手
album = track['album']['name'] # 专辑名
song_type = track['album']['type'] # 歌曲类型
# 将歌曲信息以元组的形式添加到列表中
songs.append((name, artists, album, song_type))
```
4. 连接MySQL数据库,将数据写入对应的表中。可以使用Python中的MySQL驱动程序(如pymysql)连接MySQL数据库,并执行相应的SQL语句将数据写入对应的表中。代码如下:
```python
import pymysql
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='password', db='test', charset='utf8mb4')
cursor = conn.cursor()
# 定义插入数据的SQL语句
sql = "INSERT INTO hot_songs (name, artists, album, song_type) VALUES (%s, %s, %s, %s)"
# 遍历歌曲信息列表,依次插入数据
for song in songs:
cursor.execute(sql, song)
# 提交事务并关闭数据库连接
conn.commit()
cursor.close()
conn.close()
```
完整代码如下:
阅读全文