首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

祝有情人终成眷属

情人节,给你的女神准备了什么礼?鲜花太普通,钻戒太贵,程序猿可以尝试用一种特别的方式来表达你对女神的"爱"意,有一个创意是把她过往发的微博整理后用词云展示出来。这样能体现程序猿的神秘与专业性,本文就教你怎么用 Python 快速创建出有心意词云,Python 小白也能分分钟做出来。

很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己发的微博,现在重新整理了一下,任何人的微博都可以制作出来,放在今天应该比较应景,祝天下有情人终成眷属

准备工作

本环境基于 Python3,理论上 Python2.7也是可行的,先安装必要的第三方依赖包:

requirement.txt 文件中包含上面的几个依赖包,如果用 pip 方式安装失败,推荐使用 Anaconda 安装

第一步:分析网址

先登录微博网页端,然后切换到微博移动端网址https://m.weibo.cn/,找到女神的微博ID,进入她的微博主页,分析浏览器发送请求的过程

打开 Chrome 浏览器的调试功能,选择 Network 菜单,观察到获取微博数据的的接口是https://m.weibo.cn/api/container/getIndex,后面附带了一连串的参数,这里面有些参数是根据用户变化的,有些是固定的,先提取出来。

再来分析接口的返回结果,返回数据是一个JSON 结构,total 是微博总条数,每一条具体的微博内容封装在 cards 数组中,具体内容字段是里面的 text 字段。很多干扰信息已隐去。

第二步:构建请求头和查询参数

分析完网页后,我们开始用 requests 模拟浏览器构造爬虫获取数据,因为这里获取用户的数据无需登录微博,所以我们不需要构造 cookie信息,只需要基本的请求头即可,具体需要哪些头信息也可以从浏览器中获取,首先构造必须要的请求参数,包括请求头和查询参数。

uid 是微博用户的 id

containerid 虽然不什么意思,但也是和具体某个用户相关的参数

page 分页参数

第三步:构造简单爬虫

通过返回的数据能查询到总微博条数 total,爬取数据直接利用 requests 提供的方法把 json 数据转换成 Python 字典对象,从中提取出所有的 text 字段的值并放到 blogs 列表中,提取文本之前进行简单过滤,去掉无用信息。顺便把数据写入文件,方便下次转换时不再重复爬取。

第四步:分词处理并构建词云

爬虫了所有数据之后,先进行分词,这里用的是结巴分词,按照中文语境将句子进行分词处理,分词过程中过滤掉停止词,处理完之后找一张参照图

然后根据参照图通过词语拼装成图。

wordcloud 必须指定中文字体,否则遇到中文会乱码,简单四步就完成了,最终效果图:

学习Python和网络爬虫关注公众号:

datanami

入群请回复「学习」

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180213B12Y0O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券