以下是使用Python对B站粉丝前100名数据进行抓取并生成词云
时间: 2024-04-30 22:22:34 浏览: 18
1. 安装必要的库
需要安装的库包括:requests、beautifulsoup4、jieba、wordcloud、imageio。
可以使用pip安装这些库,命令如下:
```
pip install requests
pip install beautifulsoup4
pip install jieba
pip install wordcloud
pip install imageio
```
2. 获取数据
使用requests和beautifulsoup4库获取B站排名前100的用户的粉丝数和用户名。
```python
import requests
from bs4 import BeautifulSoup
url = 'https://www.bilibili.com/ranking/fans/'
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)
soup = BeautifulSoup(response.text, 'html.parser')
users = []
for i in soup.select('.num'):
if i.text != '':
users.append(i.parent.parent.select('.info a')[0].text + ':' + i.text)
```
3. 数据清洗和分词
将爬取到的数据进行清洗和分词,去除用户名中的特殊符号和数字,使用jieba库进行分词。
```python
import jieba
user_list = []
for user in users:
name = ''.join(filter(str.isalpha, user.split(':')[0]))
fans = int(user.split(':')[1])
user_list.append((name, fans))
user_dict = {}
for user in user_list:
name = user[0]
fans = user[1]
if name in user_dict:
user_dict[name] += fans
else:
user_dict[name] = fans
user_str = ''
for name in user_dict.keys():
user_str += name + ' '
user_list = jieba.lcut(user_str)
```
4. 生成词云
使用wordcloud和imageio库生成词云。
```python
from wordcloud import WordCloud, ImageColorGenerator
import imageio
mask_image = imageio.imread('mask.png')
wordcloud = WordCloud(background_color='white', mask=mask_image, font_path='msyh.ttc', scale=4).generate(' '.join(user_list))
image_colors = ImageColorGenerator(mask_image)
wordcloud.recolor(color_func=image_colors)
wordcloud.to_file('wordcloud.png')
```
其中,mask.png是用于生成词云的图片模板,msyh.ttc是用于显示中文的字体文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)