【开源】2024最新python豆瓣电影数据爬虫+可视化分析项目
以下是一个简化的豆瓣电影数据爬虫和可视化分析的代码示例。请注意,实际的爬虫应该遵守豆瓣的robots协议,并使用适当的头信息,这里为了简洁起见,省略了相关的反爬措施。
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 获取豆瓣电影TOP250页面的HTML
def get_page_html(url):
headers = {
'User-Agent': 'your_user_agent'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
return None
# 解析HTML,提取电影信息
def parse_movie_info(html):
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.find_all('div', class_='info')
movies = []
for movie in movie_list:
rank = movie.find_all('em')[0].text
name = movie.find('a')['title']
score = float(movie.find('div', class_='rating_num').text)
num = int(movie.find('div', class='star').text.replace('人评分', '').strip())
movies.append((rank, name, score, num))
return movies
# 保存数据到CSV
def save_to_csv(movies, filename):
data = pd.DataFrame(movies, columns=['排名', '电影名', '评分', '评分人数'])
data.to_csv(filename, index=False, encoding='utf-8')
# 绘制评分分布直方图
def plot_histogram(data):
plt.hist(data['评分'], bins=25)
plt.xlabel('评分')
plt.ylabel('电影数')
plt.title('评分分布')
plt.show()
# 主函数
def main():
base_url = 'https://movie.douban.com/top250?start='
html = get_page_html(base_url + '0')
movies = parse_movie_info(html)
save_to_csv(movies, 'douban_movies.csv')
data = pd.read_csv('douban_movies.csv')
plot_histogram(data)
if __name__ == '__main__':
main()
这段代码首先定义了获取页面HTML、解析电影信息、保存数据到CSV文件以及绘制评分分布直方图的函数。主函数main()串联了这些步骤,完成了整个数据爬取和分析的流程。
请注意,这个代码示例省略了请求头部信息中的'User-Agent'字段,并且没有处理网络请求中可能出现的异常。在实际应用中,你需要替换'your\_user\_agent'为你自己的请求头信息,并且添加异常处理逻辑。
评论已关闭