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

来源:互联网 发布:苹果手机数据恢复软件免费版 编辑:程序博客网 时间:2024/05/08 01:07

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

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

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

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

    豆瓣API说明:https://developers.douban.com/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运行),可以看到结果为:

import urllib.request as urlrequesturl_visit = 'https://api.douban.com/v2/movie/26387939'crawl_content = urlrequest.urlopen(url_visit).read()print(crawl_content.decode('utf8'))


   

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

import urllib.request as urlrequesturl_visit = 'https://api.douban.com/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运行),可以看到结果为:

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


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

 

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

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

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


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

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


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

 

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

 

运行这段代码:
#调用 urllib 和 jsonimport urllib.request as urlrequestimport json#将需要爬取的电影写入列表,方便后面依次使用id_list=[26387939,11803087,20451290]#创建一个写入评分的文件 douban_movie_rank.txtwith open("douban_movie_rank.txt","w") as outputfile:#写一个for循环,分别抓取不同电影的评分,与上面爬取单个电影相同    for id in id_list:        url_visit = 'https://api.douban.com/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后都有其评分

 

 

 

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


 

阅读全文
0 0