pyecharts:用地图map展现社区程序员的分布

前言

如何使用python对腾讯云开发者社区各位创作者,进行一个区域和技术偏好分析。作为数据分析的课题,我们首先想到的就是,如何去收集创作者们的区域和技术偏好数据。

浏览腾讯云开发者社区的数据展示设计,发现在个人主页就能收集到区域和技术偏好数据。那么我们就要考虑如何进入到个人主页。

数据采集

通过对个人主页的url进行分析,个人主页是由一个固定的base_url和用户的uid组成的,也就是说获取到用户的uid就能进入个人主页。现在的问题就变成了如何获取所有创作者的uid。

开发者社区没有提供一个全量创作者展示页面,所以我们只能另辟蹊径。在开发者社区的rank榜上,我们可以获取到50个创作者的信息。

rank页面

通过控制台对rank榜单进行数据采集前的分析,发现创作者的名称和uid就放在了html中,也就是说可以通过访问rank榜单的url,解析html就能获取数据。

当点击下一页的时候,创作者的数据是使用xhr异步请求然后渲染的,也就是我常说的“页面未刷新,数据已变化”。

所以归根结底,html中只有首页10个创作者的数据,要想获取每一页的数据,我们最终还是要对api进行请求。通过请求返回的json数据,我们可以获取到每一页用户的uid,然后通过base_url + uid再次发起请求,就可以进入创作者的个人主页。

对个人主页进行分析,创作者的区域和技术偏好标签都能在html中获取。 在下面的数据分析中,只基于rank页面50个创作者,如果想要更好的数据,可以从开发者社区首页的推荐入手,获取更多创作者,然后进行去重处理。

区域和技术偏好数据

区域和技术偏好的数据采集都是最基础的html的解析,常见的python模块有BS4和Xpath,我这里使用的scrapy的Selector。

技术偏好标签数据就是对nav下所有a标签的文本提取。

tags = '|'.join(response.css('nav.com-tag-v2-list a::text').extract())

而区域标签就是对li标签进行提取。

在区域数据提取的过程中,我们发现class为uc-user-info的li标签有好几个,所以第一个方法就是使用css提取所有li标签,然后通过index来找到区域所在的li,来提取数据。

我个人不建议这种写法,因为不优雅。我们观察区域数据所在的li下,有一个class为address的i子标签,这个i标签是整个页面唯一的。所以我们可以先定位i标签,然后再定位到父标签li,最后提取li的文本信息来获取区域。

city = ''.join(response.css('i.address').xpath('..').css(' ::text').extract()).replace(' ', '')

通过css来获取i,通过xpath定位到父标签li,然后在通过css提取文本数据,最后使用replace将空格替换掉,当然有的创作者未填写区域,那就只能将这部分数据的区域置为空。

输出数据,并将数据输出成csv格式。

data = {
   
   
    "uid": uids,
    "nickname": nicknames,
    "avatarUrl": avatarUrls,
    "tag":
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值