用Python帮我爬取豆瓣电影top250的电影信息保存为CSV文件然后可视化
时间: 2023-06-27 19:07:55 浏览: 133
好的,可以使用 Python 的 requests 库和 BeautifulSoup 库来对豆瓣电影 top250 进行爬取,并使用 Pandas 和 Matplotlib 库进行数据分析和可视化。以下是示例代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 定义请求头信息
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'}
# 定义函数,获取页面信息
def get_page(url):
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
# 定义函数,解析页面信息
def parse_page(html):
soup = BeautifulSoup(html, 'lxml')
items = soup.find_all('div', class_='item')
for item in items:
yield {
'电影排名': item.find('em', class_='').text,
'电影名称': item.find('span', class_='title').text,
'电影评分': item.find('span', class_='rating_num').text,
'评价人数': item.find('div', class_='star').find_all('span')[3].text[:-3],
'电影介绍': item.find('span', class_='inq').text if item.find('span', class_='inq') else ''
}
# 定义函数,保存数据为CSV文件
def save_data(data):
df = pd.DataFrame(data)
df.to_csv('douban_top250.csv', index=False, encoding='utf-8')
# 定义函数,绘制评分分布图
def plot_rating(data):
ratings = data['电影评分'].astype(float)
plt.hist(ratings, bins=20, color='steelblue', edgecolor='k')
plt.xlabel('电影评分')
plt.ylabel('电影数量')
plt.title('豆瓣电影 Top250 评分分布图')
plt.show()
# 主函数
def main():
url = 'https://movie.douban.com/top250'
movies = []
for i in range(10):
page_url = url + '?start=' + str(i * 25) + '&filter='
html = get_page(page_url)
for item in parse_page(html):
movies.append(item)
save_data(movies)
df = pd.DataFrame(movies)
plot_rating(df)
if __name__ == '__main__':
main()
```
运行代码后,会在当前目录下生成一个名为 douban_top250.csv 的文件,同时还会绘制出豆瓣电影 Top250 的评分分布图。
阅读全文