未加星标

用 Python 分析指定知乎用户的关注者情况(上)

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

使用 秦渊 大神的 zhihu API 来分析指定知乎用户的关注者情况,或者说这篇是 zhihu API 的伪使用教程。这篇的代码也收录在 tricks 中,感兴趣的同学可以来点个 star 。

zhihu API 是有回我搜爬虫教程的时候看到的,对我这样一个完全不会爬虫的家伙来说,真是帮了大忙。star 之后一直也没怎么用过,刚好前几天被一个“三零号”喷,于是就顺便看了下自己的 800 多个关注者,写了个小脚本来分析一下。

脚本逻辑

整个脚本的逻辑很简单:先用 zhihu API 抓取我的关注者列表,根据这份名单去抓取关注者的具体信息,然后保存为 txt 文件,最后根据数据来做分析。而这一篇,就先说到获取数据并保存。

配置 cookie __author__ = 'ipreacher' import zhihuapi as api with open('cookie') as f: api.cookie(f.read())

这里在第一次使用的时候,要先配置 cookie,具体的配置方式看 文档 的 Quich Start 。

Note that you must set cookie before sending any HTTP request. In order to set cookie correctly, you should:

Sign in with your zhihu account. Open Chrome DevTools (or substitutes with other browsers) and navigate to Network panel. Select a valid request (a request with host be www.zhihu.com), and copy its Cookie value in Request Headers. DONOT use document.cookie since some cookie values are httponly. 拉取关注者的昵称和个性域名 r1 = [] r2 = [] r5 = [] # 拉取关注者的昵称和个性域名,page 根据自己关注者页数确定 def followers(me, page): for i in range(page): data = api.user(me).followers(offset=(20 * i)) for j in range(len(data)): r1.append(data[j]['name']) # 关注者的昵称 r2.append(data[j]['url_token']) # 关注者的个性域名

随后是拉取关注者的昵称和个性域名,接口每次只能获取 20 个,秦渊大神说“尝试的结果是一次最多可以拿到30个用户”。不过一次获取 20 个的话,刚好就是每一页的关注者人数,所以只要数一下自己有多少页关注者就行了。

分行打印关注者的昵称和个性域名 # 分行打印关注者的昵称和个性域名 def show(r): for k in range(len(r1)): s = (r[k] + '\n') print(s)

这个就不用多说了,只是为了一个直观的展现。

拉取并打印关注者的基本信息 # 拉取并打印关注者的基本信息,包括序号及其个性域名、昵称、赞同数、感谢数、关注人数 def ff(): for i in range(len(r2)): r3 = api.user(r2[i]).detail() r4 = [i, r3['urlToken'], r3['name'], r3['voteupCount'], r3['thankedCount'], r3['followerCount']] r5.append(r4) print(r4) #print(r5)
用 Python 分析指定知乎用户的关注者情况(上)

这就就根据之前拉取的关注者的个性域名,再去拉取并打印关注者的基本信息。这里每拉取一位关注者的信息,就打印出来――每拉取一份数据目测大概需要一秒左右,所以纯粹是弥补视觉上的空档。

将关注者的基本信息保存为 txt 文件 # 将关注者的基本信息保存为 txt 文件 def txt(r): f = open('r.txt','w') f.write(str(r)) f.close()

这是为了之后方便分析数据,txt 格式也单纯是顺手这么写了而已,大家也可以换成其他格式。

脚本的使用 if __name__ == '__main__': me = 'ipreacher' page = 41 followers(me, page) #show(r1) #show(r2) ff() txt(r5)

这个脚本可以直接用,只需要把最后的 me 和 page 这两条改成自己的就行了。

还是挺好玩的,下一篇再写数据分析。

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: ChromePython数据数据分析Head
分页:12
转载请注明
本文标题:用 Python 分析指定知乎用户的关注者情况(上)
本站链接:http://www.codesec.net/view/532721.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(91)