jupyter获得豆瓣电影top250网页信息将bd列包括导演,主演等信息这部分数据拆分,做出两个变量的词云图
时间: 2024-10-22 15:25:28 浏览: 58
在Jupyter Notebook中获取豆瓣电影Top250的网页信息并处理数据,通常需要几个步骤:
1. **网络爬取**:
使用`requests`库从豆瓣API(如果可用)或直接抓取HTML页面(如BeautifulSoup)获取电影详情。这里需要注意的是,直接抓取网站可能会遇到版权和robots.txt协议的问题。
2. **数据解析**:
通过`lxml`或`pandas`的`read_html`函数解析HTML内容,找到包含导演、主演等信息的表格或元素,并提取出所需列(假设数据存储在`df`数据框中,`bd`列包含相关信息)。
3. **数据清洗**:
清理和标准化数据,比如删除无关字符,统一编码等。将`bd`列拆分为导演和主演两个独立的列表(或其他数据结构),例如`directors`和`actors`。
4. **文本预处理**:
对导演和演员名称进行分词处理,可以使用jieba库,去除停用词和数字,只保留有意义的词语。
5. **创建词云图**:
使用`wordcloud`库,分别对导演名和演员名创建词云图。设置词云的颜色方案、字体大小等因素,生成图像并保存。
以下是伪代码示例(实际操作可能需要安装相关库):
```python
import requests
from bs4 import BeautifulSoup
from pandas import read_html
from wordcloud import WordCloud
import jieba
import matplotlib.pyplot as plt
# 步骤1: 网络爬取或数据获取
url = "https://movie.douban.com/top250"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 步骤2: 数据解析
data_df = read_html(soup.prettify(), index_col=0)[0]
bd_column = data_df['bd'] # 假设'db'列包含了相关信息
# 步骤3: 拆分数据
directors = [info.split(',')[0] for info in bd_column]
actors = [info.split(',')[-1].strip() for info in bd_column]
# 步骤4: 文本处理
stopwords = set(...) # 加载停用词
jieba.set_stop_words(stopwords)
director_words = [' '.join(jieba.cut(director)) for director in directors]
actor_words = [' '.join(jieba.cut(actor)) for actor in actors]
# 步骤5: 创建词云
director_wordcloud = WordCloud(...).generate_from_frequencies(dict.fromkeys(director_words, 1))
actor_wordcloud = WordCloud(...).generate_from_frequencies(dict.fromkeys(actor_words, 1))
# 显示和保存词云图
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 1), plt.imshow(director_wordcloud), plt.title('导演词云')
plt.subplot(1, 2, 2), plt.imshow(actor_wordcloud), plt.title('主演词云')
plt.show()
阅读全文