python爬虫爬取豆瓣音乐top250完整代码并连接MySQL数据库
时间: 2023-06-17 18:04:04 浏览: 258
以下是爬取豆瓣音乐 top250 并将数据存储到 MySQL 数据库中的完整代码:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
# MySQL数据库连接信息
HOST = 'localhost'
PORT = 3306
USERNAME = 'your_username'
PASSWORD = 'your_password'
DATABASE = 'your_database_name'
# 连接MySQL数据库
db = pymysql.connect(host=HOST, port=PORT, user=USERNAME, password=PASSWORD, database=DATABASE, charset='utf8')
cursor = db.cursor()
# 创建数据表
sql = '''CREATE TABLE IF NOT EXISTS music_top250 (
id INT(10) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
artist VARCHAR(100) NOT NULL,
score FLOAT NOT NULL,
PRIMARY KEY (id)
)'''
cursor.execute(sql)
# 爬取数据
url = 'https://music.douban.com/top250'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('tr', class_='item')
# 将数据存储到数据库中
for item in items:
title = item.find('div', class_='pl2').a['title']
artist = item.find('div', class_='pl2').p.text.strip().split('/')[0]
score = item.find('span', class_='rating_nums').text
sql = "INSERT INTO music_top250 (title, artist, score) VALUES ('{}', '{}', {})".format(title, artist, score)
cursor.execute(sql)
db.commit()
# 关闭数据库连接
db.close()
```
说明:
1. 首先需要根据自己的 MySQL 数据库连接信息修改 HOST、PORT、USERNAME、PASSWORD 和 DATABASE 变量的值。
2. 执行 CREATE TABLE 语句创建数据表 music_top250,该数据表包含 id、title、artist 和 score 四个字段。
3. 使用 requests 库和 BeautifulSoup 库爬取豆瓣音乐 top250 页面,使用 find_all 方法获取每个音乐条目(tr 标签)。
4. 对于每个音乐条目,使用 find 方法获取音乐名称(title 标签)、艺术家名称(p 标签)和评分(span 标签)信息,将这些信息插入到 MySQL 数据库中。
5. 最后关闭数据库连接。
需要注意的是,如果要多次运行该代码,需要先删除数据表 music_top250 中的所有数据,否则会出现数据重复的问题。
阅读全文