# 1.数据捕获。
数据集的获取是我们数据分析的第一步。目前获取数据的主要途径有:现成数据;编写自己的爬虫来抓取数据;使用现有的爬网工具爬网所需的内容并将其保存到数据库中,或者以文件的形式保存在本地。
博主用自己的爬虫代码获取数据。
#爬虫的设计思路。
1.首先,确定待抓取网页网址。
2.通过HTTP/HTTPS协议获取对应的HTML页面。
3.从HTML页面中提取有用的数据。
A.保存所需数据。
B.如果是页面中的另一个URL,则继续步骤2。
#爬虫基本流程。
提出请求
通过HTTP库向目标站点发送一个request就是发送一个Request,它可以包含额外的头和其他信息,等待服务器的响应。
获取响应内容。
如果服务器响应正常,会得到一个报告,报告的内容就是要获取的页面内容,类型可能包括HTML、json字符串、二进制数据(如图片、视频)等。
分析内容
得到的内容可以是HTML,可以通过正则表达式和网页解析库解析,可以直接转换成json解析对象,也可以是二进制数据,可以保存或进一步处理。
保存数据
有多种保存形式,可以保存为文本、数据库或特定格式的文件。
#反爬虫机制及对策。
1.通过分析用户请求的标头信息进行反爬网。最常用于网站。
最好通过判断同一个ip是否在短时间内频繁访问对应的网站等来分析。
增加在动态页面中爬行的难度,达到反爬行的目的。
反措施
1在爬虫中构造这些用户请求的头部信息,从而将爬虫伪装成浏览器。
一般来说,我们可以通过使用代理服务器和频繁切换代理服务器来克服限制。
3.用一些软件,比如selenium phantomJS,来克服它。
反爬虫手段:用户代理、代理、验证码、动态数据加载、加密数据。
#数据选择和处理。
1网页文本如json格式文本的HTML文档。
2.从图片获得的二进制文件以图片格式保存。
3.从视频获得的二进制文件可以保存为视频格式。
4.可以要求的任何其他东西都可以得到。
解析模式
1直接加工。
2 json解析。
3个正则表达式。
4个漂亮的组合
5 PyQuery
6 XPath
# 2.数据清理。
当我们获得数据时,我们需要清理我们抓取的数据,为后续的数据分析铺平道路。如果清洗不到位,必然会影响后续的数据分析。
下面将重点介绍数据格式统一和空值处理。
#统一格式。
从数据中删除空白。
使用crawler对数据进行爬网时,strip()用于处理爬网字符串。
将中文数据转换为阿拉伯数字。
例如,17,000变成17,000,代码如下。
Get _ int (s) :如果s [-1]='万' :s=s[0:-1]s=int(float(s)* 10000)否则3360s=int (s)返回s1234567。
出行结果如下。
if _ _ name _ _==' _ _ main _ _ ' :s=' 12,000 ' price=get _ int(s)print(price)# 120001234。
#空值处理。
使用爬网程序爬网数据时,如果爬网值不存在,它将报告错误。使用异常处理语句try{}except:pass(try是抓取视频信息的代码)跳过不存在的视频信息数据。
try:html=requests.get(Link)。textdoc=美化组(html);List=doc.find('div ',{'class' :' ops'})。findall ('span') like=list [0]。text . strip()# like like=self . getint(like)coin=list[1]。text . strip()# coin=self . getint(coin Collection=list[2]。text . strip()# Collection Collection=self . getint(Collection)print(' like ',like)print ('coin ',coin)print ('collection ',Collection)# #将数据拼成字典数据={'title' : title,' link' : link,' up' : up,' play' : play,' like' : like,' coin ' : coin,Collection ' :collection,}#存储在csv文件self中。write _ dictionary _ to _ CSV(数据,' blili2.csv ')传递。
except:pass123456789101112131415161718192021222324252627282930# 3.数据分析及可视化
表格参数信息如图
# 对视频排放量进行分析
对B站热门播放量进行分析,对2020年热门视频的播放量分为4个等级
一千万排放量以上为一个等级
五百万到一千万播放量为一个等级
五百万到一百万播放量为一个等级
一百万播放量以下为一个等级
l1=len(data[data['Play'] >= 10000000])l2=len(data[(data['Play'] < 10000000) & (data['Play'] >=5000000)])l3=len(data[(data['Play'] < 5000000) & (data['Play'] >=1000000)])l4=len(data[data['Play'] < 1000000])1234
再数据通过matplotlib库进行可视化。得到下图。
plt.figure(figsize=(9,13)) #调节图形大小labels = ['大于一千万','一千万到五百万','五百万到一百万','小于一百万'] #定义标签sizes = [l1, l2, l3, l4] #每块值colors = ['green', 'yellow', 'blue', 'red'] #每块颜色定义explode = (0,0,0,0) #将某一块分割出来,值越大分割出的间隙越大# 中文乱码和坐标轴负号处理plt.rcParams['font.sans-serif'] = ['KaiTi']plt.rcParams['axes.unicode_minus'] = Falsepatches,text1,text2 = plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct = '%3.2f%%', #数值保留固定小数位 shadow = False, #无阴影设置 startangle =90, #逆时针起始角度设置 pctdistance = 0.6) #数值距圆心半径倍数距离#patches饼图的返回值,texts1饼图外label的文本,texts2饼图内部的文本# x,y轴刻度设置一致,保证饼图为圆形plt.axis('equal')plt.title("B站热门播放量分布图")plt.legend() # 右上角显示plt.show()12345678910111213141516171819202122
从图中可以看出,在B站能上每周必看热门推荐的视频播放量大部分在五百万到一百万播放量,低于一百万播放量的视频很难上每周必看热门推荐,而一年中播放量达到于一千万的视频也很少。
让我们一起看看播放量排名前10的视频是那些好看的视频
data.nlargest(10,columns='Play') 1
再数据通过matplotlib库进行可视化。得到下图。
d.plot.bar(figsize = (10,8),x='Title',y='Play',title='Play top 10')plt.xticks(rotation=60)#夹角旋转60度plt.show()123
从图中可以看出哔哩哔哩拜年祭最受欢迎且播放量远远高于其它视频,说明B站2020年拜年祭节目进行的比较成功。
# 对作者进行分析
通过数据分析看那个作者的作品上热门次数最多,从而判断那个作者在2020年中最受欢迎。
对作者进行划分,统计出现的次数
d2=data.loc[:,'Up'].value_counts()d2=d2.head(10)12
再数据通过matplotlib库进行可视化。得到下图。
d2.plot.bar(figsize = (10,8),title='UP top 10')plt.show()12
说明B站上每周热门次数最多的作者是凉风Kaze,一年52周热门推荐,一共出现了48次,几乎每周热门都有他的视频出现。从数据来看,2020年最受欢迎的作者是凉风Kaze。
# 对视频参数分析
对热门视频的点赞,投币,收藏平均比例进行分析
data['点赞比例'] = data['Like'] /data['Play']data['投币比例'] = data['Coin'] /data['Play'] data['收藏比例'] = data['Collection'] /data['Play']d3=data.iloc[:,8:11]d3=d3.mean()12345
再数据通过matplotlib库进行可视化。得到下图。
d3.plot.bar(figsize = (10,8),title='UP top 10')plt.show()12
2020年中点赞比例最高,达到大约9%。说明在B站看视频的人,平均10个人中才会有一个人点赞。而平均平均20个人中才会有一个人对视频进行投币。
# 对标题进行分析
对标题高频次进行提取,看那类标题比较受欢迎
首先对所有标题进行遍历,储存在字符串s中
d4=data['Title']s=''for i in d4: s=s+i1234
然后用词云进行可视化
标题中带有“朱一旦,半佛,罗翔”等作者名或“英雄联盟,原神”等游戏热门视频比较多
小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取