用 python 爬取微博评论并手动分词制作词云

最近上海好像有举行个什么维吾尔族的秘密时装秀,很好看的样子,不过我还没时间看。但是微博上已经吵翻了天,原因是

好吧,这不是我们关心的,我的心里只有学习

我爱学习

Python 爬虫

本次爬取的是这条微博

这条微博

微博的移动版网页还是比较好爬的,首先打开这条 微博的页面 ,然后按下 F12,打开开发者工具,选择 network 面板
然后鼠标滚轮向下滑,可以看到 network 面板产生新的请求,我们选择按 Type 排序,找到 xhr 类型

寻找评论接口

可以看到出现了两个奇怪的请求,它们的尾部都跟着 page = * ,我们选择其中一个双击,来到了一个新的页面


评论的 json 数据

这就是评论的 json 格式数据,这样,我们就找到了微博评论的 API 接口。

接下来就是 python 爬虫代码,有了 API 接口,爬虫也就不难写了

scrap_ximengyao_weibo.py

import requests
import json
import re

# source_wei_wo_url = "https://m.weibo.cn/status/4176281144304232"


def get_comment(head_url, count):
    i = 1
    fp = open("奚梦瑶.txt", "a", encoding="utf8")
    while i <= count:
        try:
            url = head_url + str(i)
            resp = requests.get(url)
            resp.encoding = resp.apparent_encoding
            comment_json = json.loads(resp.text)
            comments_list = comment_json["data"]
            for commment_item in comments_list:
                username = commment_item["user"]["screen_name"]
                comment = commment_item["text"]
                label_filter = re.compile(r'</?\w+[^>]*>', re.S)
                comment = re.sub(label_filter, '', comment)
                fp.write(comment)
            print(i)
        except Exception as e:
            print(str(i) + "遇到异常")
            continue
        i += 1
    fp.close()


if __name__ == "__main__":
    head_url = "https://m.weibo.cn/api/comments/show?id=4176281144304232&page="
    get_comment(head_url, 40000)

本来每请求一次接口就会返回来 10 条评论,目前她微博有 36 万评论,所以我把 while 循环设为了请求 40000 次,但是要全部爬完花的时间太长了,我可没那闲工夫一直等着它跑完。所以爬到 1 万多次的时候我就手动停止爬虫了

爬虫运行停止之后,我们在爬虫的同名目录下得到了一个 “奚梦瑶.txt”,大约包含了10万条网友评论。有的小伙伴就要开始问了,既然我们拿到了评论文本,现在是不是就可以进行分词了?

Too Young!

由于评论里包含了太多的 emoji 表情,直接分词的话会导致解码错误,所以我们还要再对评论进行一次过滤,过滤掉非中文字符,准确来说,是过滤掉非 GBK 编码字符

评论过滤

过滤的原理很简单,就是用 python 把“奚梦瑶.txt”这个文件读取进来,换个编码,然后再写入一个新文件“ximengyao.txt”

filter_ximengyao_weibo.py

fp = open("奚梦瑶.txt", encoding="utf-8", errors="ignore")
new_fp = open("ximengyao.txt", "w", encoding="gbk", errors="ignore")
try:
    all_text = fp.read()
    new_fp.write(all_text)
finally:
    fp.close()
    new_fp.close()

分词

分词的解决方案有很多,本来我是想直接用 图悦 在线分词生成词云的,但是文本太多了,图悦已经奔溃,后来我选择了 结巴分词 来手动分词

首先安装结巴分词
pip install jieba

我们的目的是选取评论中词频最高的 100 个词组,以降序将他们排列,然后做成词云。我在简书找到了一位网友写的博客,正好满足我们的需求
用jieba分词提取关键词做漂亮的词云

其实接下来你就可以去看他的博客了

这里贴一下我的分词代码,毕竟我是一个有始有终的人

jieba_ximengyao_weibo.py

import jieba.analyse

path = 'ximengyao.txt'
file_in = open(path, 'r')
content = file_in.read()

try:
    # jieba.analyse.set_stop_words('你的停用词表路径')
    tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
    for v, n in tags:
        #权重是小数,为了凑整,乘了一万
        print(v + '\t' + str(int(n * 10000)))

finally:
    file_in.close()

有一点需要注意,这个 词云制作 网站是不支持中文字体的,所以你需要从网上下载一款中文字体,然后添加进去。

生成词云图

???

词频最高的词居然是“回复”

我这暴脾气

不过这也是情理之中,原创的评论有限,许多都是吵架,盖楼的。这里把我们把“回复”这个词删掉,用剩下的词重新制作一个词云

删掉“回复”

最终结果

词云图

郑重声明:最终结果不代表本人观点!

再见!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容