1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > DC学院数据分析师(入门)学习笔记----基于网站API抓取《摔跤吧!爸爸》的豆瓣评分情况

DC学院数据分析师(入门)学习笔记----基于网站API抓取《摔跤吧!爸爸》的豆瓣评分情况

时间:2020-12-26 23:31:10

相关推荐

DC学院数据分析师(入门)学习笔记----基于网站API抓取《摔跤吧!爸爸》的豆瓣评分情况

前几天在某公众号上看到了对《战狼2》的数据分析,涉及人群,观看时间,影评,地点等等,分析的超级棒,所以就想着数据分析是一件很有说话权的事情。作为这方面的小白,决定抽时间学习一番。于是乎,通过博客来记录一下自己的学习路程。

其实就是跟着网课的操作笔记

这次是基于网站API抓取《摔跤吧!爸爸》的豆瓣评分情况

首先,我们需要了解豆瓣API的说明。

豆瓣API说明:/wiki/?title=movie_v2

可以看到豆瓣电影的sourceurl的格式为:

这也就是说,不同的电影的API链接只是最后的id不同。

我们来看一下《摔跤吧!爸爸》的id:26387939

按照豆瓣API的格式,打开《摔跤吧!爸爸》的JSON看一下:

当然,我们还是希望能直接通过代码的方式来访问这个API,而不是通过我们的查询来查看,怎么做呢?python提供给我们一个对URL进行访问的工具包:urllib

下面,介绍urllib这个包的调用方法:

我们通过一个具体的实例说明urllib这个工具包的使用。

通过Jupyter这个可视化工具来编写代码,安装Anaconda的时候已经默认安装好了,改一下工作路径,运行jupyter-notebook.exe文件,重新new一个python文件,就可以看到编写界面了。

运行下述这段代码(ctrl+Enter运行),可以看到结果为:

importurllib.requestasurlrequesturl_visit ='/v2/movie/26387939'crawl_content = urlrequest.urlopen(url_visit).read()print(crawl_content.decode('utf8'))

因为有中文编码的问题,所以采用另一种编码方式:

importurllib.requestasurlrequesturl_visit ='/v2/movie/26387939'crawl_content = urlrequest.urlopen(url_visit).read()print(crawl_content.decode('unicode-escape'))

可以看到这时可以正常显示中文了。

上述我们抓取到的是JSON格式。

那么,如何从这个JSON格式中,得到我们想要的信息呢?利用json这个工具包

下面阐述json这个工具包的使用。

这个包是python自带的,不需要单独安装

在我们之前的python文件中新建一个cell:

运行下述这段代码(ctrl+Enter运行),可以看到结果为:

importjsonjson_content = json.loads(crawl_content.decode('utf8'))rating = json_content['rating']['average']print(rating)

即,得到我们想要获取的评分。

如果我们想要把抓取的结果保存到文件当中应该怎么做呢?

运行下面代码,将电影id和评分保存到txt文件中:

id=26387939rating=json_content['rating']['average']withopen("movie_score.txt","a")asoutputfile:outputfile.write("{} {}\n".format(id, rating))

我们可以查看一下movie_score.txt这个文件,看是否保存到了我们想要的信息。

这个movie_score.txt在哪个路径下呢?

这时我们看到,我们已经成功把想要获取的内容保存到了txt文件当中:

如果有多个电影的,怎样通过循环的方式来获取它们的评分呢?

运行这段代码:

#调用 urllib 和 jsonimporturllib.requestasurlrequestimportjson#将需要爬取的电影写入列表,方便后面依次使用id_list=[26387939,11803087,20451290]#创建一个写入评分的文件 douban_movie_rank.txtwithopen("douban_movie_rank.txt","w")asoutputfile:#写一个for循环,分别抓取不同电影的评分,与上面爬取单个电影相同foridinid_list:url_visit ='/v2/movie/{}'.format(id)crawl_content = urlrequest.urlopen(url_visit).read()json_content = json.loads(crawl_content.decode('utf8'))rank=json_content['rating']['average']outputfile.write("{} {}\n".format(id, rank))

查看一下txt中的内容:每一个电影id后都有其评分

当然,也可以通过指定影片名来得到其豆瓣得分:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。