编写代码爬取学校官网关于学习20大精神的新 闻信息,并且生成词云。
时间: 2024-06-09 20:07:53 浏览: 126
词云的生成代码
这里提供一个Python的爬虫和词云生成的示例代码,具体实现需要根据学校官网的具体情况进行修改。以下代码需要安装BeautifulSoup4、jieba和wordcloud这三个库。
```python
import requests
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 爬取新闻
url = 'https://news.sjtu.edu.cn/jdyw/1.htm'
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
news_list = soup.find_all('div', class_='news_list')
words = ''
for news in news_list:
if '学习20大精神' in news.a.text:
news_url = news.a['href']
news_response = requests.get(news_url)
news_response.encoding = 'utf-8'
news_soup = BeautifulSoup(news_response.text, 'html.parser')
news_content = news_soup.find('div', class_='content').text.strip()
words += news_content
# 分词
stopwords = set(['的', '了', '和', '是', '在', '等', '有', '就', '也', '与', '为', '要', '这', '与', '及', '以', '对', '不', '中'])
word_list = list(jieba.cut(words))
word_list = [word for word in word_list if word not in stopwords]
# 生成词云
wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', max_words=200).generate(' '.join(word_list))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
在上述代码中,我们首先使用requests和BeautifulSoup库爬取学校官网上的新闻,然后使用jieba库进行分词,最后使用wordcloud库生成词云并展示。需要注意的是,这里的词云字体使用了微软雅黑,需要在代码所在的目录下有msyh.ttc文件。如果没有该字体文件,可以将其替换为其他中文字体。
阅读全文