【爬虫综合大作业】腾讯视频——大家到底都在看什么?!

作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075

 

相信大家都有在腾讯视频上看过视频,那大家是否知道腾讯视频里有个【热搜榜】,它是用户们所搜索的视频热度排行榜。

那么今天我们就来爬爬看,大家都在腾讯视频上看些什么!

【腾讯视频热搜榜】

 

首先,热搜榜分成了【全部】 【总榜单】 【电视剧】 【综艺】 【动漫】 【少儿】 【电影】 【纪录片】 【娱乐】 【明星】 【游戏】 【音乐】 【热点】十三个模块进行统计,

我从中抽取了几个我们平时看得比较多的模块进行分析,先来看下总榜单的数据~大家大部分是在看些什么!

 

数据显示:占比最大的果然还是电视剧,紧跟着的就是综艺,剩下的基本比例差不多。

另外,总榜排行的前三的分别是最近很火的综艺:1.王牌对王牌 第四季 2.创造营 还有电视剧 3.都挺好

 既然综艺那么多人看,那么我们就来看看大家都在看些什么综艺,哪些综艺最受观众们欢迎呢?

最受欢迎的还是真人秀综艺,看来比起配有固定台词的节目,更加喜欢现场直播,没有剧本的真人秀节目!

虽然最近的选秀节目创造营很火,但毕竟这种选秀节目在中国还是比较少,所以占比并不大。

之后我们来看看有关于电视剧类型的词云图,看看哪些电视剧最受大众欢迎!

可见映入眼帘的是“古装”、“家庭”、“爱情”、“奇幻”这几个关键词偏大众喜欢,这就是大众偏爱的电视剧类型。

像前阵子单单是古装片爆红的就不下五部:《延禧攻略》、《东宫》、《香蜜沉沉烬如霜》、《皓镧传》、《宫心计2深宫计》等等,

因此也能解释为什么现在的导演都喜欢拍这些类型的剧!因为观众爱看~

看完电视剧,我们再来看看电影吧!

以下是电影类型的词云图:

 

 一眼可以看出“喜剧”、“科幻”、“爱情”、“动作”这四个关键词在图中显示最大,也就说明大家都是对这方面的电影有所偏爱。

因此,排行榜上的也都是这几种类型的电影,像排行榜上位于前列的《复仇者联盟》、《飞驰人生》都是属于科幻和喜剧的。

那么这些电影多数是哪里产出的呢?看看电影的分布地区图:

排名最高的内地,其次是美国和香港,这些地方都是我们熟知的拍电影比较有名的地方,

因此大家喜欢的电影大部分都是来自这几个地方。

接下来我们又来看看动漫区的数据,以下是动漫种类柱形图:

可见比起温馨浪漫的额动漫,热血冒险的动漫更受大家欢迎,因此观看的人也比较多。

 像排行榜上前三的《斗罗大陆》、《斗破苍穹特别篇2沙之澜歌》还有《狐妖小红娘》等这些都是冒险、武侠、战斗的动漫。

分析大人所喜欢看的视频之后,我们现在来分析一下小朋友喜欢看的视频有哪些?

看看【少儿】频道里,小朋友都在看什么类型的视频,以下是少儿视频类型的词云图:

 所见是一些都是小朋友喜欢的词语“动物”、男孩子喜欢的“战斗冒险”、还有可以和爸爸妈妈一起看的“合家欢”系列的动画片。

 像排行榜上的第一位《小猪佩琪》不仅仅是小朋友喜欢看的动画片,在大人里也是十分受欢迎的。

之后我们再看看纪录片的地区分布情况:

其实结果是比较出乎我意料的!本来想着应该基本上都是内地的,但是结果发现只有一半多点是属于内地地区。

第二个占比的是英国,第三是美国。上网查找资料发现这两个国家的纪录片都拍得比较好,因此尽管在国内也有许多人观看。

以上是对腾讯视频中排行榜数据的爬取和分析,从七个角度去分析出大家喜好视频的种类和地区,总结出了大众观看的视频到底是怎么样的。

 

所用的数据汇总:

表格汇总:

总结:这次的爬虫作业刚好解开了我平时一直存在的疑惑,大家平常上网都在看些什么视频。借着这次作业就爬取了腾讯视频的热搜排行榜。经过这次的数据分析,发现大家都偏爱看电视剧比较多,无论是网剧还是现播剧都备受观众喜爱。除去电视剧,紧接着的就是电影和综艺,占得比例也比较大,看来大家平时看的视频都差不多是这几种类型的视频。

部分主要代码(因为代码有重复部分,下面以爬取【少儿】频道为例):

  1 import requests
  2 import csv
  3 from lxml import etree
  4 import pandas as pd
  5 import pymysql
  6 import random
  7 from sqlalchemy import create_engine
  8 #爬取【少儿】数据
  9 r = requests.get("https://v.qq.com/x/hotlist/search/?channel=106").text
 10 selector = etree.HTML(r)
 11 li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
 12 d = []
 13 for i in li:
 14   c = []
 15   num = i.xpath("./div[1]/span")
 16   if num:
 17     c.append(num[0].text)
 18   title = i.xpath("./div[1]/a")
 19   if title:
 20     c.append(title[0].text)
 21   place = i.xpath("./div[2]/a[1]")
 22   if place:
 23     c.append(place[0].text)
 24   d.append(c)
 25   kind = i.xpath("./div[2]/a[2]")
 26   if kind:
 27     c.append(kind[0].text)
 28 
 29 
 30 # #爬取【动漫】数据
 31 # r = requests.get("https://v.qq.com/x/hotlist/search/?channel=3").text
 32 # selector = etree.HTML(r)
 33 # li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
 34 # b = []
 35 # for i in li:
 36 #   c = []
 37 #   num = i.xpath("./div[1]/span")
 38 #   if num:
 39 #     c.append(num[0].text)
 40 #   title = i.xpath("./div[1]/a")
 41 #   if title:
 42 #     c.append(title[0].text)
 43 #   place = i.xpath("./div[2]/a[1]")
 44 #   if place:
 45 #     c.append(place[0].text)
 46 #   d.append(c)
 47 #   kind = i.xpath("./div[2]/a[2]")
 48 #   if kind:
 49 #     c.append(kind[0].text)
 50 
 51 # #爬取【电影】数据
 52 # r = requests.get("https://v.qq.com/x/hotlist/search/?channel=1").text
 53 # selector = etree.HTML(r)
 54 # li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
 55 # d = []
 56 # for i in li:
 57 #   c = []
 58 #   num = i.xpath("./div[1]/span")
 59 #   if num:
 60 #     c.append(num[0].text)
 61 #   title = i.xpath("./div[1]/a")
 62 #   if title:
 63 #     c.append(title[0].text)
 64 #   place = i.xpath("./div[2]/a[1]")
 65 #   if place:
 66 #     c.append(place[0].text)
 67 #   d.append(c)
 68 #   kind = i.xpath("./div[2]/a[2]")
 69 #   if kind:
 70 #     c.append(kind[0].text)
 71 
 72 # #爬取【电视剧】数据
 73 # r = requests.get("https://v.qq.com/x/hotlist/search/?channel=2").text
 74 # selector = etree.HTML(r)
 75 # li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
 76 # d = []
 77 # for i in li:
 78 #   c = []
 79 #   num = i.xpath("./div[1]/span")
 80 #   if num:
 81 #     c.append(num[0].text)
 82 #   title = i.xpath("./div[1]/a")
 83 #   if title:
 84 #     c.append(title[0].text)
 85 #   place = i.xpath("./div[2]/a[1]")
 86 #   if place:
 87 #     c.append(place[0].text)
 88 #   d.append(c)
 89 #   kind = i.xpath("./div[2]/a[2]")
 90 #   if kind:
 91 #     c.append(kind[0].text)
 92 
 93 # #爬取【综艺】数据
 94 # r = requests.get("https://v.qq.com/x/hotlist/search/?channel=10").text
 95 # selector = etree.HTML(r)
 96 # li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
 97 # d = []
 98 # for i in li:
 99 #   c = []
100 #   num = i.xpath("./div[1]/span")
101 #   if num:
102 #     c.append(num[0].text)
103 #   title = i.xpath("./div[1]/a")
104 #   if title:
105 #     c.append(title[0].text)
106 #   place = i.xpath("./div[2]/a[1]")
107 #   if place:
108 #     c.append(place[0].text)
109 #   d.append(c)
110 #   kind = i.xpath("./div[2]/a[2]")
111 #   if kind:
112 #     c.append(kind[0].text)
113 
114 # #爬取【总榜单】数据
115 # r = requests.get("https://v.qq.com/x/hotlist/search/?channel=0").text
116 # selector = etree.HTML(r
117 # li = selector.xpath("/html/body/div[3]/div/div/div[2]/ul/li")
118 # d = []
119 # for i in li:
120 #   c = []
121 #   num = i.xpath("./div[1]/span")
122 #   if num:
123 #     c.append(num[0].text)
124 #   title = i.xpath("./div[1]/a")
125 #   if title:
126 #     c.append(title[0].text)
127 #   place = i.xpath("./div[2]/a[1]")
128 #   if place:
129 #     c.append(place[0].text)
130 #   d.append(c)
131 #   kind = i.xpath("./div[2]/a[2]")
132 #   if kind:
133 #     c.append(kind[0].text)
134 
135 # 导成csv文件
136 out = open("children.csv","a")
137 csv_writer = csv.writer(out,dialect='excel')
138 csv_writer.writerow(["序号","节目名称","地区","类型"])
139 for text in d:
140   csv_writer.writerow(text)
141 
142 #导成数据库
143 conInfo = "mysql+pymysql://root@host:port/txsp?charset=utf8"#连接数据库
144 engine = create_engine(conInfo,encoding='utf-8')
145 df = pd.DataFrame(d)
146 df.to_sql(name='phb', con=engine, if_exists='append', index=False)#建表
View Code

 

posted on 2019-04-28 15:09  makky  阅读(834)  评论(0编辑  收藏  举报

导航