excelvba抓取网页数据(人均985,年薪百万的知乎背后,到底有什么秘密?)
优采云 发布时间: 2021-12-31 06:05excelvba抓取网页数据(人均985,年薪百万的知乎背后,到底有什么秘密?)
友情提示:文末...
一个完整的python数据分析流程是怎样的?
使用python从网站中抓取数据并保存到SQLite数据库中,然后对数据进行清洗,最后对数据进行数据可视化分析。
但是熟悉它的人应该知道,python爬取很简单,但是分析起来却非常困难。SQL 语句,Pandas 和 Matplotlib 非常繁琐,大多数人不会。
于是想到了一种更简单的数据分析方式,即python爬取+BI分析。BI是什么就不用我多介绍了。Python强大的数据采集能力,结合敏捷BI简单快速的数据可视化操作,一定能发挥出分析的效果!
那么这次我们就来看看“人均985,年薪百万”知乎,背后到底有什么秘密?话不多说,开始爬!
一、我们想要什么数据?
知乎 用户所在的学校和公司肯定是首当其冲的。我想看看这些人是编造的还是真的哈哈哈。
其次是性别、职业、地理位置、活动水平等,都是。
二、 爬取的过程
知乎 现在我用的是https请求,数据加密,不过问题不大,重要的是网页数据发生了变化,后台在请求的时候会对爬虫做一些判断,所以需要每次请求时添加请求头尽可能接近浏览器请求的样子。
获取列表页面的源码后,可以从中获取每个问题的链接:
每页有20道题,所以可以得到20道题的链接,然后是每道题的处理:
实现这一步,剩下的就是循环,判断和一些细节。
代码的最后部分如下:
import requests
import pandas as pd
import time
headers={
'authorization':'',#此处填写你自己的身份验证信息
'User-Agent':''#此处填写你自己浏览器的User-Agent
}
user_data = []
def get_user_data(page):
for i in range(page):#翻页
url = 'https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20'.format(i*20)
response = requests.get(url, headers=headers).json()['data']
user_data.extend(response) #把response数据添加进user_data
print('正在爬取第%s页' % str(i+1))
time.sleep(1) #设置爬取网页的时间间隔为1秒
if __name__ == '__main__':
get_user_data(10)
df = pd.DataFrame.from_dict(user_data)#以字典保存数据
df.to_csv('zhihu.csv',encoding='utf_8_sig')#保存到用户名为zhihu的csv文件中,encoding='utf_8_sig'参数是为了解决中文乱码的问题
print(df)
更多源码见文末!
在Python代码中,我没有使用线程池,而是使用了10个main()方法进行爬取,也就是10个进程,历时4个小时,爬取了57w+的数据。
三、使用BI进行数据可视化分析
现在我们已经到了最后一步,开始用BI进行数据可视化,揭秘知乎的时候到了。
市场上有很多种BI工具。国外的Tableau和国内的FineBI都是BI领域的佼佼者,但早就听说Tableau适合基础数据分析师,对小白很不友好。另外,前天无意中看到IDC的报告,发现帆软的市场份额是第一。为了避免返工,我选择了敏捷工具FineBI。事实证明,我的选择是对的。
首先在官网下载FineBI。虽然是企业级数据分析平台,但对个人永久免费。文末为大家准备了下载链接~
然后直接使用FineBI提供的数据配置终端的功能,添加SQL数据集(或者直接添加表)来检查验证刚刚抓取存储的数据是否已经成功存储到MySQL中。
忘了说了,FineBI 的一大特色就是自助分析。什么是自助分析?自己拖拽数据就可以了,可以和Matplotlib一样的效果,你可能也会想到Excel,但是一般都是几万行以上的数据,excel基本无能为力,很卡。但是FineBI还是可以处理大数据的,效率有可能高出几十倍、几百倍。
同时,VBA有一个致命的弱点,就是只能基于excel进行自动化,别无他法。
在写这篇文章之前,我分析了房价和销量,特地做成了一张*敏*感*词*图供大家参考:
四、知乎数据可视化
FineBI的仪表盘可以通过拖拽的方式调整组件的位置,并配备了各种类型的直方图、饼图和雷达图。数据可视化就是这么简单,只有你想不到,没有它你做不到。
1、哪个城市的知乎用户最多?
从云字图可以看出,越繁华的城市,知乎的用户越多(文字越大,占比越大)。因此,我们也可以看到,以北京、上海、广州、深圳四个一线城市为中心,其次是新一线城市。换句话说:知乎人多是一线城市或新一线城市,真是见多识广!
我们来看看具体的排名:
杭州位居第三。果然,互联网的优采云之一并没有被吹捧。阿里巴巴网易起到了很大的作用。你为什么这么说?看到这个职业你就明白了。
2、他们属于哪些学校?
看看,看看,这个度真的很高,谁说人均985吹的?
但是知乎专注于高智商的聚集地,学生花在手机上的时间比上班族多,这也就不足为奇了。
既然分析了学校,就要看看各个高校玩知乎的男女比例:
不用我说,你也能猜到蓝色代表男孩。女孩要么购物要么学习。低头玩手机的肯定是男生(虽然我也是男的)。
我们来看看每个地区有哪些大学是知乎重度用户。颜色越深,学校的知乎用户越多:
不说了,知乎人均是985真锤。我流下了羡慕的泪水。请问各位同学,你们是如何做到边玩边学的?如果你教我,我的高考可能更接近清华的录取分数线……
3、知乎 占有率
排除了学生之后,我们发现知乎的人都是……
产品经理最多。这是近年来最流行的职业,但是你的文档呢?需求被绘制?你对知乎的页面交互不满意吗?你为什么不去上班?
可以看出,除了一些互联网公司的共同职位外,教师和*敏*感*词*用户在知乎中也占据了很大的比例。
我们再用一张热图来观察知乎主流职业(前四)在各个地区的分布情况。颜色越深,该区域的职业数量越多:
总结
分析了这么多,不是要告诉你知乎的用户是什么样的,而是说如果你要做数据分析,FineBI确实是一个非常有用的工具,无论是对个人还是对公司。所以。
当然,以上只是FineBI的冰山一角,更多的东西还需要自己去探索。