使用python爬取微博近两天的前十个热搜,写入文档nove.txt,使用jieba进行词频统计,结果排序输出到result.csv中,最后生成词云图。
时间: 2024-03-31 18:34:32 浏览: 160
好的,这是一个比较复杂的任务,但是可以分步骤来完成。首先,我们需要使用Python爬取微博热搜榜单上的热门关键词。可以使用`requests`和`BeautifulSoup`库来完成这个任务。以下是代码示例:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://s.weibo.com/top/summary'
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')
keywords = soup.select('.td-02 a')
with open('nove.txt', 'w', encoding='utf-8') as f:
for i in range(10):
keyword = keywords[i].text.strip()
f.write(keyword + '\n')
```
这段代码会将前十个热门关键词写入到`nove.txt`文件中。
接下来,我们需要使用`jieba`库进行分词和词频统计。以下是示例代码:
```python
import jieba
import csv
jieba.setLogLevel(20)
jieba.load_userdict('userdict.txt')
with open('nove.txt', 'r', encoding='utf-8') as f:
text = f.read()
words = jieba.lcut(text)
word_counts = {}
for word in words:
if len(word) == 1:
continue
elif word == '微博':
continue
else:
word_counts[word] = word_counts.get(word, 0) + 1
word_counts_items = list(word_counts.items())
word_counts_items.sort(key=lambda x: x[1], reverse=True)
with open('result.csv', 'w', encoding='utf-8-sig', newline='') as f:
writer = csv.writer(f)
writer.writerow(['词语', '词频'])
for item in word_counts_items:
writer.writerow([item[0], item[1]])
```
这段代码会将`nove.txt`中的文本进行分词和词频统计,并将结果按照词频排序写入到`result.csv`文件中。
最后,我们可以使用`wordcloud`库生成词云图。以下是示例代码:
```python
import wordcloud
with open('nove.txt', 'r', encoding='utf-8') as f:
text = f.read()
wc = wordcloud.WordCloud(
background_color='white',
font_path='C:/Windows/Fonts/simhei.ttf',
max_words=100,
width=800,
height=600,
margin=2
)
wc.generate(text)
wc.to_file('wordcloud.png')
```
这段代码会将`nove.txt`中的文本生成词云图,并将结果保存到`wordcloud.png`文件中。
以上就是完整的代码示例,可以将这些代码组合起来,完成任务。
阅读全文