相信最近科技圈都在调侃一件事:10 月 8 日中午的一条微博,引发了一场新浪微博用户们(尤其是女性用户)之间的轩然大波,导致新浪微博瘫痪。
本文主要涉及知识点包括新浪微博爬虫、Python 对数据库的简单读写、简单的列表数据去重和自然语言处理(snowNLP 模块、机器学习)。适合有一定编程基础,并对 Python 有所了解的盆友阅读。
这条微博的始作俑者,就是全球超人气偶像明星鹿晗。
程序员们纷纷开启了科♂学地讨论:
详细内容可见昨日的图文:鹿晗是如何将微博服务器搞炸的?
微博工程师是如何一边结婚一边加班的:
淘宝程序员是如何原谅鹿晗的:
在这一刻,全世界都知道鹿晗恋爱了:
全球的女鹿饭们一起失恋了。
那么鹿晗的粉丝们情绪如何呢?我们来分析一下鹿晗恋情微博的评论,分析评论时粉丝们的心情状态,且听我娓娓道来。(想看分析结果的可直接跳到第 5 节)
新浪微博 API
在经历了几次爬虫被禁的悲痛(真的很痛)之后,我学会了在爬网站之前先查有没有 API 的“优良”习惯。
新浪作为一个大厂,怎么会不推出新浪微博 API 呢,面向开发者新浪有自己的开放平台,这里是 Python 调用微博 API 的方法,通过登录 App_key 和 App_secret 方式访问微博 API 的代码,代码是基于 PY2 的。PY3 对 Weibo 模块使用存在一定问题。
-
from weibo import APIClient
-
import webbrowser
-
import sys
-
reload(sys)
-
sys.setdefaultencoding('utf-8')
-
APP_KEY = '你的App Key ' #获取的App Key
-
APP_SECRET = '你的AppSecret' #获取的AppSecret
-
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' #回调链接
-
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
-
url = client.get_authorize_url()
-
webbrowser.open_new(url) #打开默认浏览器获取code参数
-
print '输入url中code后面的内容后按回车键:'
-
code = raw_input()
-
r = client.request_access_token(code)
-
access_token = r.access_token
-
expires_in = r.expires_in
-
client.set_access_token(access_token, expires_in)
知道如何登录 API 了,辣么如何调用 API 爬单条微博的评论呢?一行代码搞定。
r = client.comments.show.get(id = 4160547165300149,count = 200,page = 1)
所有关于单条微博的评论信息都在 r.comments 中了,这里需要对照微博 API 文档,微博 API 有声明调用微博评论 API 需要获取用户授权。