写爬取B站动漫排行榜上所有动漫且存入MySQL数据库的代码
时间: 2024-02-16 15:02:28 浏览: 85
好的,以下是 Python 代码实现:
```python
import requests
import pymysql
# 连接 MySQL 数据库
db = pymysql.connect(host='localhost', user='root', password='password', database='test_db', charset='utf8mb4')
cursor = db.cursor()
# 爬取 B 站动漫排行榜页面
url = 'https://www.bilibili.com/v/popular/rank/all'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
response = requests.get(url, headers=headers)
html = response.text
# 解析页面并获取动漫信息
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
anime_list = soup.find_all('li', class_='rank-item')
# 将动漫信息存入 MySQL 数据库
for anime in anime_list:
title = anime.find('a', class_='title').text.strip()
play_num = anime.find('div', class_='detail').find_all('span')[0].text.strip()
danmaku_num = anime.find('div', class_='detail').find_all('span')[1].text.strip()
# 将数据插入 MySQL 数据库
sql = f"INSERT INTO anime_rank (title, play_num, danmaku_num) VALUES ('{title}', '{play_num}', '{danmaku_num}')"
cursor.execute(sql)
db.commit()
# 关闭数据库连接
db.close()
```
其中,`test_db` 是你的 MySQL 数据库名称,`anime_rank` 是你要存储数据的表名。在运行代码前,需要先在 MySQL 中创建一个名为 `test_db` 的数据库,并在该数据库中创建一个名为 `anime_rank` 的表,表结构如下:
```sql
CREATE TABLE anime_rank (
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
play_num VARCHAR(50) NOT NULL,
danmaku_num VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
运行代码后,你将得到一个存储了 B 站动漫排行榜上所有动漫的 MySQL 数据库。
阅读全文