目标网站:https://movie.douban.com/; 从该网站中找到电影排名的链接; 仔细分析排名网站页面发生变更时的信息; 列出详细分析页面的步骤; 编写代码,模仿浏览器人为操作,获取电影的电影名、导演和演员、评分、排名及图片; 数据存储到films.csv或名为films的记事本中或名为films的数据库中,存储以下内容:电影名、导演和演员、评分、排名; 将电影图片获取后存储到films_pic文件夹中; 对存储数据进行检查处理,实现以电影名评价数及评分生成折线图的可视化操作。
时间: 2024-04-04 09:30:09 浏览: 17
好的,我来帮你分析页面步骤并提供代码实现:
1. 从目标网站中找到电影排名链接,发现排名页面为 https://movie.douban.com/chart 。
2. 对排名页面进行分析,可以发现电影信息都在class为“pl2”的div标签中,其中电影名在a标签中,导演和演员信息在p标签中,评分在span标签中,排名在em标签中。
3. 编写代码,模拟浏览器人为操作,获取电影的电影名、导演和演员、评分、排名及图片,并将数据存储到csv文件中以及将电影图片存储到指定文件夹中。
```python
import requests
from bs4 import BeautifulSoup
import urllib.request
import os
import pandas as pd
# 请求排名页面
url = 'https://movie.douban.com/chart'
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_list = []
movies = soup.select('.pl2')
for movie in movies:
# 获取电影名
title = movie.select('a')[0].get_text().strip()
# 获取导演和演员信息
bd = movie.select('p')[0].get_text().strip()
# 获取评分
rating = movie.select('.rating_nums')[0].get_text().strip()
# 获取排名
rank = movie.select('.pl')[0].get_text().strip().replace('#', '')
# 获取电影图片链接
pic_url = movie.select('img')[0]['src']
# 下载电影图片
pic_name = title + '.jpg'
folder = 'films_pic'
if not os.path.exists(folder):
os.mkdir(folder)
try:
urllib.request.urlretrieve(pic_url, os.path.join(folder, pic_name))
except urllib.error.HTTPError:
continue
# 存储电影信息
movie_info = [title, bd, rating, rank]
movies_list.append(movie_info)
# 存储数据到csv文件中
df = pd.DataFrame(movies_list, columns=['电影名', '导演和演员', '评分', '排名'])
df.to_csv('films.csv', index=False, encoding='utf_8_sig')
```
4. 对存储数据进行检查处理,实现以电影名评价数及评分生成折线图的可视化操作。
```python
import matplotlib.pyplot as plt
# 读取csv文件中的数据
df = pd.read_csv('films.csv')
# 对电影名评价数及评分进行可视化
fig, ax = plt.subplots()
ax.plot(df['电影名'], df['评分'], label='评分')
ax.plot(df['电影名'], df['评价人数'], label='评价人数')
ax.legend()
plt.xticks(rotation=90)
plt.show()
```
这样,就实现了从目标网站获取电影排名信息,并将数据存储到csv文件中以及将电影图片存储到指定文件夹中,并且实现了可视化操作。