hello,大家好,我是wangzirui32,今天来教大家如何爬取CSDN博文评论,并制作成词云图。
开始学习吧!
1. 寻找评论源地址
打开一篇博文,再打开抓包工具Network,发现源地址:

我们来解析一下返回数据:
{... # 省略亿些
"data":{
"list":[
{"info":{
"content":"博主不光能写的一手好代码,还能写的一手好文章。",
"userName":"Rex__404",
"digg":1,
"diggArr":[],
"parentUserName":null,
...
}
}
...
可以看到,评论数据就在data的list中,遍历每一项的info中的content,就可以爬取评论数据了。
再解析一下URL:
https://blog.csdn.net/phoenix/web/v1/comment/list/116066478?page=1&size=10&commentId=
得出,116066478为文章id,page为页数,size为每页返回的评论数量,commentId可以去掉(因为它是空参数)。
2. 安装所需模块
输入pip安装命令:
pip install requests jieba pyecharts fake_useragent
就可以安装本示例所有的模块。
3. 编写代码
代码奉上——
from collections import Counter # Python内置模块
from jieba.posseg import lcut
from pyecharts.charts import WordCloud
from fake_useragent import UserAgent as UA
import requests
# 输入id
article_id = input("请输入文章id号:")
# 拼接URL
url = 'https://blog.csdn.net/phoenix/web/v1/comment/list/' + article_id
# 参数设置 先爬取100条评论
params = {
"page": "1",
"size": "100",
}
# UA伪装
headers = {
"User-Agent": UA().random
}
# 获取评论数据
r = requests.get(url, headers=headers, params=params)
data = r.json()['data']['list']
# 处理评论数据
comment_words = []
for i in data:
# 分词 并返回词性
comment_content = lcut(i['info']['content'])
# 加入总列表
comment_words += comment_content
# 过滤词语
new_comment_words = []
# 排除的词性列表 分别是 数字,未知(包含标点符号),英文
remove_part = ['m', 'x', 'eng']
for i in comment_words:
word = list(i)
# 一个字的词也要去掉
if (len(word[0]) == 1) or (word[1] in remove_part):
continue # 跳过本次循环
new_comment_words.append(word[0])
# 统计每个词出现的频率 要使用Counter函数
counter = list(Counter(new_comment_words).items())
# 绘制词云图 shape='cardioid'设置词云形状为心形
c = (
WordCloud()
.add("评论词云图", counter, word_size_range=[20, 100], shape='cardioid')
)
c.render()
(关于jieba库的介绍可以参考我的这篇文章)
在代码中,我们首先对评论内容进行了获取,带词性分析的分词,然后,对总分词结果进行过滤,过滤掉了标点,数字和字母,还有一个字的词语,得到了new_comment_words列表。
在第45行中,我使用了items函数,这是因为生成词云图需要的是一组元组(每组元组以 (词语, 出现频率) 作标准),而items函数刚好将Counter(new_comment_words)的返回字典键值对转化为了一组元组。
4. 效果展示
运行代码,输入:
请输入文章id号:116066478
打开生成的render.html文件,可以看到:

这里是我的其中一篇博文的效果,你还可以输入其他的id号,如,笔者在CSDN排行榜上选了一些热门文章的id,生成结果如图:



好了,今天的课程就到这里,喜欢的可以点赞收藏,我是wangzirui32,我们下次再见!

本文介绍了如何使用Python爬取CSDN博文的评论,并将评论内容制作成词云图。首先,通过分析网络请求找到评论数据的源地址和关键参数;接着,安装必要的Python模块;然后,编写爬虫代码,利用jieba库进行分词处理;最后,展示生成的词云图效果。

1854





