爬取百度热搜制作词云图
时间: 2023-09-20 22:04:44 浏览: 47
好的,下面是具体步骤:
首先,我们需要导入所需的库,包括 requests、BeautifulSoup、jieba 和 wordcloud。
```python
import requests
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
```
接下来,我们需要爬取百度热搜的页面内容,并使用 BeautifulSoup 进行解析,提取出热搜的关键词列表。
```python
url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
hot_list = []
for item in soup.select('.list-table tr'):
try:
hot_list.append(item.select('.keyword a')[0].text)
except:
pass
```
接下来,我们需要将关键词列表进行分词,并使用 jieba 库来进行分词操作。
```python
text = ' '.join(jieba.cut(''.join(hot_list)))
```
接下来,我们就可以利用 WordCloud 库生成词云图了。首先,我们需要先设置一下词云图的参数,包括背景颜色、字体、图片尺寸等。然后,我们可以使用 `generate()` 函数来生成词云图。
```python
wordcloud = WordCloud(background_color='white', font_path='msyh.ttc', width=800, height=600).generate(text)
```
最后,我们可以使用 matplotlib.pyplot 库中的 `imshow()` 函数来显示词云图。
```python
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
完整代码如下:
```python
import requests
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
hot_list = []
for item in soup.select('.list-table tr'):
try:
hot_list.append(item.select('.keyword a')[0].text)
except:
pass
text = ' '.join(jieba.cut(''.join(hot_list)))
wordcloud = WordCloud(background_color='white', font_path='msyh.ttc', width=800, height=600).generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
执行完上述代码后,就可以得到一张基于百度热搜关键词的词云图了。