python爬取猫眼电影+mysql+flask+pychart数据分析
时间: 2023-09-27 10:10:14 浏览: 201
这个项目的大致流程如下:
1. 使用 Python 的 requests 和 Beautiful Soup 库爬取猫眼电影网站的电影信息,包括电影名称、评分、评论人数、上映时间等等。可以使用多线程或异步加速爬取过程。
2. 将爬取到的电影信息存储到 MySQL 数据库中,可以使用 Python 的 pymysql 库进行数据库的连接和操作。
3. 使用 Flask 框架编写 Web 应用程序,提供数据查询和展示功能。可以使用 Flask 的模板引擎 Jinja2 来渲染页面。
4. 使用 PyChart 库对电影数据进行可视化分析,生成各种图表,如柱状图、折线图、饼图等等,以展示电影数据的特征和规律。
具体实现步骤如下:
1. 爬取猫眼电影网站的电影信息
使用 requests 和 Beautiful Soup 库爬取猫眼电影网站的电影信息。可以先通过浏览器查看网页的源代码,找到电影信息的 HTML 标签和属性,再通过 Beautiful Soup 解析并提取出需要的信息。例如,可以使用以下代码爬取电影名称和评分:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://maoyan.com/films'
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')
movies = soup.find_all('div', class_='movie-item-hover')
for movie in movies:
name = movie.find('span', class_='name').text
score = movie.find('span', class_='score').text
print(name, score)
```
2. 将电影信息存储到 MySQL 数据库中
使用 pymysql 库连接 MySQL 数据库,并将爬取到的电影信息存储到数据库中。可以先创建一个 movies 表来存储电影信息,包括电影名称、评分、评论人数、上映时间等字段。例如,可以使用以下代码将电影信息存储到数据库中:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
# 创建 movies 表
cursor = conn.cursor()
create_table_sql = '''
CREATE TABLE IF NOT EXISTS movies (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
score FLOAT NOT NULL,
comments INT NOT NULL,
release_date DATE NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
'''
cursor.execute(create_table_sql)
# 将电影信息插入数据库
for movie in movies:
name = movie.find('span', class_='name').text
score = float(movie.find('span', class_='score').text)
comments = int(movie.find('div', class_='movie-item-number').find_all('span')[2].text[:-3])
release_date = movie.find_all('div', class_='movie-hover-title')[1].text.split(':')[1]
insert_sql = f'''
INSERT INTO movies (name, score, comments, release_date) VALUES
('{name}', {score}, {comments}, '{release_date}')
'''
cursor.execute(insert_sql)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
```
3. 使用 Flask 编写 Web 应用程序
使用 Flask 框架编写 Web 应用程序,提供数据查询和展示功能。可以使用 Flask 的模板引擎 Jinja2 来渲染页面。例如,可以先创建一个 index.html 模板文件来展示电影数据:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>猫眼电影数据分析</title>
</head>
<body>
<h1>猫眼电影数据分析</h1>
<table>
<tr>
<th>电影名称</th>
<th>评分</th>
<th>评论人数</th>
<th>上映时间</th>
</tr>
{% for movie in movies %}
<tr>
<td>{{ movie.name }}</td>
<td>{{ movie.score }}</td>
<td>{{ movie.comments }}</td>
<td>{{ movie.release_date }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
```
然后,在 Flask 应用程序中定义一个路由,从数据库中获取电影数据,并渲染模板文件:
```python
from flask import Flask, render_template
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
# 创建 Flask 应用程序
app = Flask(__name__)
# 定义路由,获取电影数据并渲染模板文件
@app.route('/')
def index():
cursor = conn.cursor(pymysql.cursors.DictCursor)
select_sql = '''
SELECT * FROM movies
'''
cursor.execute(select_sql)
movies = cursor.fetchall()
cursor.close()
return render_template('index.html', movies=movies)
# 启动应用程序
if __name__ == '__main__':
app.run(debug=True)
```
4. 使用 PyChart 库进行数据可视化分析
使用 PyChart 库对电影数据进行可视化分析,生成各种图表,如柱状图、折线图、饼图等等,以展示电影数据的特征和规律。例如,可以使用以下代码生成一个柱状图,展示电影评分的分布情况:
```python
from pychart import *
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
database='test',
charset='utf8mb4'
)
# 查询电影数据
cursor = conn.cursor()
select_sql = '''
SELECT score, COUNT(*) AS count FROM movies GROUP BY score
'''
cursor.execute(select_sql)
data = cursor.fetchall()
cursor.close()
# 生成柱状图
chart = VerticalBarChart()
chart.addDataset([row[1] for row in data])
chart.setLegend([f'{row[0]:.1f} 分' for row in data])
chart.setXAxis({'title': '评分'})
chart.setYAxis({'title': '电影数量'})
chart.setTitle('电影评分分布图')
chart.setColors(['blue', 'red', 'green', 'yellow', 'purple'])
chart.download('score.png')
```
以上是一个简单的 Python 爬取猫眼电影+MySQL+Flask+PyChart 数据分析的项目流程,具体实现还需要根据实际需求进行调整和优化。
阅读全文