豆瓣 Top 250 电影榜单中的电影数据python爬虫的2.2数据获取分析怎么写
时间: 2024-03-31 12:32:27 浏览: 192
豆瓣 Top 250 电影榜单中的电影数据获取可以使用 Python 编写爬虫程序,具体的数据获取分析步骤如下:
1. 确定数据源并进行数据采集:根据项目需求,选择豆瓣 Top 250 电影榜单作为数据源,使用 Python 编写爬虫程序进行数据采集。可以使用 requests 库进行 HTTP 请求,使用 BeautifulSoup 库进行 HTML 解析,获取电影的详细信息。
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.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'}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
movies = soup.select('.grid_view .item')
for movie in movies:
name = movie.select_one('.title').text.strip()
score = movie.select_one('.rating_num').text.strip()
director = movie.select('p')[0].text.strip()[3:]
actors = movie.select('p')[0].text.strip()[5:]
time = movie.select('p')[1].text.strip()[0:10]
country = movie.select('p')[1].text.strip()[11:]
print(name, score, director, actors, time, country)
```
2. 数据清洗和预处理:对采集到的数据进行清洗和预处理,包括去除重复数据、处理缺失数据、统一数据格式等。例如,可以使用 Pandas 库进行数据处理,对采集到的数据进行去重、缺失值处理等操作。
```python
import pandas as pd
data = pd.DataFrame(columns=['name', 'score', 'director', 'actors', 'time', 'country'])
for movie in movies:
name = movie.select_one('.title').text.strip()
score = movie.select_one('.rating_num').text.strip()
director = movie.select('p')[0].text.strip()[3:]
actors = movie.select('p')[0].text.strip()[5:]
time = movie.select('p')[1].text.strip()[0:10]
country = movie.select('p')[1].text.strip()[11:]
data = data.append({'name': name, 'score': score, 'director': director, 'actors': actors, 'time': time, 'country': country}, ignore_index=True)
# 去重
data.drop_duplicates(inplace=True)
# 处理缺失值
data.dropna(inplace=True)
# 统一数据格式
data['score'] = data['score'].astype(float)
```
3. 数据存储:将处理后的数据存储到数据库或文件中,方便后续的数据分析和可视化。例如,在该项目中可以使用 MySQL 数据库进行数据存储,并且结合 Hive 数据仓库进行电影相关数据统计。
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', db='douban', charset='utf8mb4')
cursor = conn.cursor()
# 创建表格
cursor.execute('create table if not exists movies(name varchar(255), score float, director varchar(255), actors varchar(255), time varchar(255), country varchar(255))')
# 存储数据
for index, row in data.iterrows():
name = row['name']
score = row['score']
director = row['director']
actors = row['actors']
time = row['time']
country = row['country']
cursor.execute('insert into movies values(%s, %s, %s, %s, %s, %s)', (name, score, director, actors, time, country))
conn.commit()
# 关闭连接
cursor.close()
conn.close()
```
阅读全文