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

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

73dff5eb52d9

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

73dff5eb52d9

我爱学习

Python 爬虫

本次爬取的是这条微博

73dff5eb52d9

这条微博

微博的移动版网页还是比较好爬的,首先打开这条 微博的页面 ,然后按下 F12,打开开发者工具,选择 network 面板

然后鼠标滚轮向下滑,可以看到 network 面板产生新的请求,我们选择按 Type 排序,找到 xhr 类型

73dff5eb52d9

寻找评论接口

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

73dff5eb52d9

评论的 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万条网友评论。有的小伙伴就要开始问了,既然我们拿到了评论文本,现在是不是就可以进行分词了?

73dff5eb52d9

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

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

生成词云图

73dff5eb52d9

???

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

73dff5eb52d9

我这暴脾气

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

73dff5eb52d9

删掉“回复”

最终结果

73dff5eb52d9

词云图

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

再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公众号出现该公众号提供的服务出现故障分析

近日公众号出现了 出现该公众号提供的服务出现故障的错误提示 百度了一下这种错误的可能性 在这里插入图片描述 1. 程序后台未回复微信success 2. 5秒内无响应 3. 授权给了多个第三方平台&#xff0c;其中一个不可用。 4. ToUserName和 FromUserName 参数不正确无法找到接收…

数据结构之栈对逆BoLand表达式的计算

一. 后缀表达式: 后缀表达式,逆波兰表达式,是指运算符位于操作符之后,计算机对该式是从做到右进行计算,计算过程如下例子 二.计算思路 对于后缀表达式的计算,需要一个栈即可, 即遇见数字压栈,遇见运算符从栈中取出两个数,根据运算进行操作, 需要注意的是,减法以及除法都是后出栈…

c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存

1. 什么是共享内存共享内存(Shared Memory)&#xff0c;指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中&#xff0c;所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进…

python爬取新闻网站内容_python爬虫案例:抓取网易新闻

此文属于入门级级别的爬虫&#xff0c;老司机们就不用看了。 本次主要是爬取网易新闻&#xff0c;包括新闻标题、作者、来源、发布时间、新闻正文。 首先我们打开163的网站&#xff0c;我们随意选择一个分类&#xff0c;这里我选的分类是国内新闻。然后鼠标右键点击查看源代码&…

如何查看QQ和微信查看授权过那些应用?

平时生活中&#xff0c;要登录一些网站或者app时&#xff0c;为了省事儿&#xff0c;都用第三方登录&#xff0c;登录是简单快捷了一些 时间长了,授权过的那些应用都不知道了&#xff0c;甚至一些应用你没用去授权权限也一直开放给别人网站的 所以为了自己帐号的安全还是有必…

C# ASP.NET MVC 图片上传的多种方式(存储至服务器文件夹,阿里云oss)

图片上传时我们进场用到的一个功能今天将他整理了一下写了个demo希望对大家有用 该demo分为如下 1.上传至至服务器文件夹 2.上传至阿里云oss 3.百度webupload上传图片 效果图如下: 首先讲解一下后台代码 (1)上传至服务器存储 using System; using System.Collections; u…

java变量命名规则_浅谈JAVA开发规范与开发细节(上)

开发团队在开发过程中&#xff0c;由于每个人的开发习惯&#xff0c;以及对于技术的理解深浅程度不一&#xff0c;往往一个项目在开发过程中&#xff0c;代码的质量&#xff0c;代码的风格都不尽相似&#xff0c;所以有一份适合团队的代码规范是非常有必要的&#xff0c;而一个…

Charles

安装 https://www.jianshu.com/p/cb744a4c0344 https://blog.csdn.net/qq_28831197/article/details/81196571 使用说明&#xff1a; 来源&#xff1a;https://www.jianshu.com/p/73b134559c76 过滤网络请求 通常情况下&#xff0c;我们需要对网络请求进行过滤&#xff0c;只监…

.NET Core Docker使用初入篇

本篇内容如何在CentOS上安装Docker服务器与工具准备安装Docker更新系统安装Docker源设置Docker开机启动启动Docker使用Docker运行一个.NET Core 例子.net core 例子拉取.net core 例子停止.net core 例子启用其他如何在CentOS上安装Docker 服务器与工具准备 首先我们需要一个…

如何延长作用域链_第4部分2:作用域(链)和 闭包

知识列表作用域/作用域链 闭包&#xff08;涉及JS垃圾回收机制 &#xff09;https://zhuanlan.zhihu.com/p/27110726 【 js 基础 】【读书笔记】作用域和闭包https://juejin.im/post/5afb0ae56fb9a07aa2138425 深入理解闭包之前置知识→作用域与词法作用域&#xff08;一&#…

C# T4模板在项目中的使用

1.什么是t4模版 T4&#xff0c;即4个T开头的英文字母组合&#xff1a;Text Template Transformation Toolkit。 T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎。在 Visual Studio 中&#xff0c;“T4 文本模板”是由一些文…

Docker中安装Jenkins实时发布.net core 项目(一)

Docker中安装Jenkins实时发布.net core 项目安装docker懒人篇手动安装dockerfile安装jenkins常规安装jenkinsjenkins的安装搜索jenkins拉取jenkins容器jenkins的启动jenkins密码其他安装docker 使用curl安装最新版 curl -fsSL https://get.docker.com/ | sh重启Docker systemc…

Docker中安装Jenkins实时发布.net core 项目(二)

Docker中安装Jenkins实时发布.net core 项目防坑点升级dockerjenkins运行运行命令jenkins拉取git并构建项目其他查看发布文件防坑点 升级docker 首先我们要确认我们在liunx安装的不是1.31.1的docker容器不然在后面的运行中会报错 can not open /etc/sysconfig/docker如果你是…

Jenkins构建 netcore5.0 项目时出现NU3028/NU3037错误的解决方案

我在使用Jenkins自动化部署项目的时候&#xff0c;出现了如下的错误 error NU3028: Package System.IO.Compression 4.3.0 from source https://api.nuget.org/v3/index.json: The repository primary signatures timestamp found a chain building issue: UntrustedRoot: self…

2019长安大学ACM校赛网络同步赛 L XOR

题意 求区间内有多少数x满足x^4x^5x0 1≤l≤r≤1018. 题解 根据异或的性质可以推到 x^4x5x -->x^4xx4x 即x和4x每一位都不同&#xff0c;即x和(x<<2)每一位都不同&#xff0c;就是x中每一位都与他前前一位不同。 那么就很简单了&#xff0c;可以很容易写出数位DP状态f…

贝塞尔曲线 总结

Bzier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义&#xff1a;起始点、终止点&#xff08;也称锚点&#xff09;、控制点。通过调整控制点&#xff0c;贝塞尔曲线的形状会发生变化。 1962年&#xff0c;法国数学家Pierre Bzier第一个研究了这种矢量绘制曲…

python变量标识符_简谈-Python的注释、变量类型、标识符及关键字

在Python程序中&#xff0c;要想支持中文输出&#xff0c;则要在代码前面添加标识符&#xff1a;开发人员在程序中自定义的一些符号和名称 标示符是自己定义的,如变量名 、函数名等 标识符的规则&#xff1a; 标示符由字目、下划线和数字组成&#xff0c;且数字不能开头 python…

win10使用docker desktop安装k8s一直starting解决方法

在docker中启动k8s一直卡在staring当中查了许多文档都写得不明不白的&#xff0c;研究了许久终于解决决定写个帖子来记录一下 1.首先查看本地docker中k8s的版本拉取源码 我们这里是1.19.7 然后我们进入到 k8s下载 去拉取k8s源码 git clone https://codechina.csdn.net/mirr…

Android菜单详解(三)——SubMenu和IconMenu

我们在上一篇介绍了如何在Android中创建和响应选项菜单&#xff0c;今天我们将探索子菜单和图标菜单。 子菜单Sub Menu 子菜单提供了一种自然的组织菜单项的方式&#xff0c;它被大量地运用在windows和其他OS的GUI设计中。Android同样支持子菜单&#xff0c;你可以通过addSubMe…

Liunx下使用Nginx负载均衡

我是centos8得主机 安装命令: yum install nginx 如果为Ubuntu主机 sudo apt-get install nginx 安装完成后&#xff0c;启用并启动Nginx服务&#xff1a; sudo systemctl enable nginxsudo systemctl start nginx 然后我们有2个服务&#xff1a; 一个地址为: http://xx…