帮我用Python 写一个爬虫,关于获取豆瓣top10 电影资料,要求源码有解析,数据可视化
时间: 2023-06-25 19:06:14 浏览: 109
一个python 豆瓣电影的爬虫
5星 · 资源好评率100%
好的,以下是用Python实现的豆瓣top10电影爬虫代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 请求URL
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'}
# 发送请求
response = requests.get(url, headers=headers)
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 获取电影列表
movie_list = soup.find('ol', class_='grid_view').find_all('li')
# 定义空列表存储电影信息
movies = []
# 解析电影信息
for movie in movie_list:
# 获取电影排名
rank = movie.find('em').text
# 获取电影名称
title = movie.find('span', class_='title').text
# 获取电影评分
rating = movie.find('span', class_='rating_num').text
# 获取电影评价人数
rating_num = movie.find('div', class_='star').find_all('span')[3].text[:-3]
# 获取电影描述
desc = movie.find('span', class_='inq').text if movie.find('span', class_='inq') else ''
# 存储电影信息
movies.append({'rank': rank, 'title': title, 'rating': rating, 'rating_num': rating_num, 'desc': desc})
# 将电影信息转换成DataFrame格式
movies_df = pd.DataFrame(movies)
# 可视化电影评分
plt.bar(movies_df['title'], movies_df['rating'].astype(float))
plt.xticks(rotation=90)
plt.title('豆瓣电影Top10')
plt.xlabel('电影名称')
plt.ylabel('电影评分')
plt.show()
```
该爬虫程序会爬取豆瓣电影Top10的电影信息,并将电影信息以DataFrame格式存储。同时,程序还会通过matplotlib库可视化电影评分。你可以运行该程序进行测试。
阅读全文