Python爬取豆瓣电影+数据可视化,爬虫教程!
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 请求URL获取页面内容
def get_page(url):
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)
return response.text
# 解析页面数据
def parse_data(html):
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.find_all('div', class_='info')
for movie in movie_list:
yield {
'排名': movie.find('em').text,
'电影名': movie.find('span', class_='title').text,
'评分': movie.find('rating_num').text,
'评分人数': movie.find('span', class_='rating_people').text[3:-3]
}
# 保存数据到CSV
def save_to_csv(data, filename):
df = pd.DataFrame(data)
df.to_csv(filename + '.csv', index=False, encoding='utf-8-sig')
# 绘制电影评分的直方图
def plot_histogram(data):
ratings = data['评分'].str.extract(r'(\d+\.?\d*)').astype('float')
plt.hist(ratings, bins=25, color='lightblue', edgecolor='black')
plt.xlabel('评分')
plt.ylabel('电影数')
plt.title('豆瓣电影评分直方图')
plt.show()
# 主函数
def main():
url = 'https://movie.douban.com/chart'
html = get_page(url)
movie_data = list(parse_data(html))
save_to_csv(movie_data, 'douban_movies')
plot_histogram(pd.DataFrame(movie_data))
if __name__ == '__main__':
main()
这段代码实现了从豆瓣电影排行榜网页爬取数据,并将数据保存到CSV文件,最后使用matplotlib绘制电影评分的直方图。代码使用了requests库来发送HTTP请求,BeautifulSoup库来解析页面,pandas库来处理数据,以及matplotlib库来绘图。
评论已关闭