用python爬取豆瓣TOP250电影信息,把电影信息放到一个列表中,再把列表通过pandas库放到excel中,在利用pyecharts库画图 把pandas统计结果,将实现的代码完整的写出,包括文件名字,类名等
时间: 2024-04-02 17:31:32 浏览: 68
好的,以下是完整的代码:
文件名:douban_top250.py
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
from pyecharts.charts import Bar
class DoubanTop250:
def __init__(self):
self.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'}
self.movies = []
def get_movies(self):
for i in range(0, 250, 25):
url = f'https://movie.douban.com/top250?start={i}&filter='
html = requests.get(url, headers=self.headers).text
soup = BeautifulSoup(html, 'html.parser')
lis = soup.find('ol', class_='grid_view').find_all('li')
for li in lis:
title = li.find('span', class_='title').text
info = li.find('div', class_='bd').p.text.strip().split('\n')
director, actors, year, country, genres = '', '', '', '', ''
for i in info:
if '导演' in i:
director = i.split('导演: ')[-1]
elif '主演' in i:
actors = i.split('主演: ')[-1]
elif '年份' in i:
year = i.split(' / ')[0]
country = i.split(' / ')[1]
genres = i.split(' / ')[2]
rating = li.find('span', class_='rating_num').text
comment_num = li.find('div', class_='star').find_all('span')[-1].text[:-3]
self.movies.append([title, director, actors, year, country, genres, rating, comment_num])
def save_to_excel(self):
df = pd.DataFrame(self.movies, columns=['电影名称', '导演', '主演', '上映年份', '国家/地区', '电影类型', '豆瓣评分', '评论人数'])
df.to_excel('douban_top250.xlsx', index=False)
def plot_rating_bar(self):
df = pd.DataFrame(self.movies, columns=['电影名称', '导演', '主演', '上映年份', '国家/地区', '电影类型', '豆瓣评分', '评论人数'])
df['豆瓣评分'] = df['豆瓣评分'].astype(float)
df = df.sort_values(by='豆瓣评分', ascending=False).reset_index(drop=True)
bar = Bar()
bar.add_xaxis(list(df['电影名称']))
bar.add_yaxis('豆瓣评分', list(df['豆瓣评分']))
bar.set_global_opts(title_opts={'text': '豆瓣电影Top250评分排名'})
bar.render('douban_rating_bar.html')
```
请注意,这里的类名是 `DoubanTop250`。该爬虫程序可以爬取豆瓣电影Top250的电影信息,并将电影信息保存到 Excel 文件中,并利用 Pyecharts 库生成评分排名条形图。
阅读全文