python爬虫豆瓣数据可视化
时间: 2025-01-04 16:30:15 浏览: 11
### 使用Python编写爬虫抓取豆瓣数据并实现数据可视化
#### 抓取豆瓣数据
为了从豆瓣网站上获取所需的数据,可以利用`requests`库发送HTTP请求,并通过`BeautifulSoup`解析HTML文档。下面是一个简单的例子来展示如何抓取豆瓣电影Top250的信息:
```python
import requests
from bs4 import BeautifulSoup
def fetch_douban_top_250():
url = 'https://movie.douban.com/top250'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = []
for item in soup.select('div.item'):
title = item.find('span', class_='title').get_text()
rating_num = float(item.find('span', class_='rating_num').get_text())
items.append({
'title': title,
'rating_num': rating_num
})
return items
```
此段代码定义了一个名为`fetch_douban_top_250()`的函数用于访问目标网页并提取每部影片的名字及其评分[^2]。
#### 数据清洗与预处理
在实际操作中,所获得的数据可能并不完美,因此需要对其进行一定的清理工作。例如去除不必要的字符、填补缺失值等。这里假设已经得到了一部份原始数据存储在一个列表里,则可以通过如下方式完成初步整理:
```python
cleaned_data = []
for entry in raw_data:
cleaned_entry = {}
# 去除多余空白符
cleaned_title = str(entry['title']).strip()
cleaned_rating = round(float(str(entry['rating_num'])), 1)
cleaned_entry.update({'title': cleaned_title})
cleaned_entry.update({'rating_num': cleaned_rating})
cleaned_data.append(cleaned_entry)
```
这段脚本会遍历每一个字典对象,执行字符串修剪以及数值四舍五入的操作,从而得到更加整洁的结果集[^1]。
#### 可视化呈现
当拥有一组经过良好准备后的数据之后,就可以考虑采用合适的工具来进行图形表示了。在此推荐使用matplotlib库绘制柱状图以比较各部作品之间的得分差异;另外还可以借助wordcloud创建词云图突出显示高频词汇。
以下是制作柱状图的一个实例:
```python
import matplotlib.pyplot as plt
titles = [item["title"][:8]+"..." if len(item["title"])>11 else item["title"] for item in cleaned_data][:10]
ratings = [item["rating_num"] for item in cleaned_data][:10]
plt.barh(titles[::-1], ratings[::-1])
plt.xlabel('Score')
plt.ylabel('Movie Title')
plt.title('Douban Top Movies Rating Distribution')
plt.show()
```
上述代码选取前十个最高分的作品作为样本,截断过长名称以便于阅读,并反转顺序使得图表顶部对应最佳成绩。最后调用show()方法弹出窗口查看最终成果。
阅读全文