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

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

我爱学习

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()

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

生成词云图

???

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

我这暴脾气

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

删掉“回复”

最终结果

词云图

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

再见!

python爬取微博评论_用 python 爬取微博评论并手动分词制作词云相关推荐

  1. Python 爬虫实战(1):分析豆瓣中最新电影的影评并制作词云

    入门Python不久,想做个小项目练练手,碰巧最近一部国产电影<红海行动>反响不错,便萌生想法去抓取一下它最新的评论,并制作词云,来看看网页对这部电影的一些评价,接下来就是开始分析啦(分析 ...

  2. python设计jieba_python实现jieba库分词制作词云

    <老人与海>是我最喜爱的一部外国名著,该作围绕一位老年古巴渔夫,与一条巨大的马林鱼在离岸很远的湾流中搏斗而展开故事的讲述.尽管海明威笔下的老人是悲剧性的,但他身上却有着尼采"超人 ...

  3. python爬取B站视频弹幕分析并制作词云

    1.分析网页 视频地址: www.bilibili.com/video/BV19E- 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...

  4. python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云

    目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...

  5. python爬取胡歌相关视频弹幕,分析并制作词云

    养成习惯,先赞后看!!! 目录 1.分析网页 2.爬虫+jieba分词+制作词云 2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https:// ...

  6. bilibili怎么设置弹幕数量_python爬取B站视频弹幕分析并制作词云

    1.分析网页 视频地址: www.bilibili.com/video/BV19E- 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...

  7. python怎么爬取知乎回答并制作词云_爬虫|爬取微博动态

    ​ 爬取微博是爬虫新手入门项目,相对简单.但没想到还是遇到了些问题.. 0 踩点 老规矩第一步先踩点.某个用户的微博网址为:https://weibo.com/u/id,其中id是一长串数字,每个用户 ...

  8. python爬取爱情公寓电影评论并制作词云

    python爬取爱情公寓电影评论并制作词云 前言:     一直想研究研究如何生成词云,今天抽点时间给大家分享一下制作词云的过程,本文重在研究词云如何制作,由于时间仓促,至于爬取的数据量不大,大家可自 ...

  9. python爬取B站评论制作词云

    python爬取B站评论制作词云 江山代有才人出,B站评论占一半 废话不多说,咱们直接上代码` import imageio import jieba import wordcloud import ...

最新文章

  1. 力扣每日一题——独一无二出现的次数
  2. 2022-2028年中国第五代移动通信技术(5G)市场研究及前瞻分析报告
  3. mysql 二进制日志
  4. fio模拟mysql写入速度_IO压力测试工具 -- FIO 使用说明
  5. 1-1-Html技术
  6. python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码
  7. Maven中的自定义settings.xml文件
  8. 笔记︱精准营销解决方案以及营销组合评估
  9. JS实现图片无缝滚动特效;附addEventListener()方法、offsetLeft和offsetWidth属性。
  10. deepin linux 怎么安装软件,deepinLinux系统安装及软件安装
  11. 一般论文发表流程有哪些
  12. 微信扫二维码跳转网页链接如何制作
  13. 邹恒甫:谈点2002年后海鬼/龟和特聘教授的工资待遇和福利
  14. mysql ndbcluster 缺点_MySQL集群 -- NDB Cluster
  15. excel跨多个表格求和_看完财务同事用Excel函数完成的进销存报表,老板惊呆了...
  16. 开发人员技能提升阅读书籍推荐
  17. 股票数据的获取以及下载保存
  18. 爬虫项目八:Python对天猫商品数据、评论数据爬取
  19. 白帽子和黑客的区别是什么?如何成为一名白客?这篇文章能给你所有答案
  20. 聪明的质检员 二分验证答案

热门文章

  1. datatable 如何修改 某行 某列 的 字体颜色
  2. Proteus仿真单片机:51单片机的仿真
  3. Javascript JSON格式
  4. webpack+vue实现项目
  5. java基础集合简介Map(三)下
  6. 一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法
  7. gcc -E 产生预编译后的文件
  8. vim QuickFix 窗口
  9. 微信小程序,用户拒绝授权后重新授权;uni-app小程序,用户拒绝授权后点击无效;重新进入后拉起位置授权框;
  10. 前端学习(3343):ant design中导航使用