17.1 使用Web API
Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互,这种请求称为API调用。
1、GIT和GITHUB
Git是一个分布式版本控制系统,让程序员团队能够协作开发项目。
GitHub上的项目都存储在仓库中,后者包括与项目相关联的一切:代码、项目参与者信息、问题或bug报告等。
2、使用API调用请求数据
URL:https://api.github.com/search/repositories?q=language:python&sort=stars针对该API调用进行分析:
https://api.github.com/ ---- 将请求发送到GitHub中响应API调用部分。
search/repositories/ ---- 搜索所有的仓库repositories
? ---- 指出我们要传递一个实参
q ---- 表示查询,用等号表示查询指定要求
language=python ---- 获取主要语言为python的仓库信息
&sort=stars ---- 按照其星级进行排序。
3、安装requests
4、处理API响应
request.get()获取响应,
调用获取响应后.status_code属性查看调用是否成功,如果返回值为200,则响应成功。
响应对象是jsonresponse,直接调用response.json()方法将其转换为python下字典。
5、处理响应字典
6、概述最受欢迎的仓库
均对响应数据做一些简单的输出。
7、监视API的速率限制
大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。
17.2 使用Pygal可视化仓库
导入pygal以及要应用于图表的Pygal样式。
建立两个空列表,包含名称和星数。
遍历items列表,在两个列表中添加元素。
使用LightenStyle类定义一种式样,添加颜色,并传递实参base_style=LightColorizedStyle类。
使用pygal.Bar()类创建条形图。 PS:注意这里导入pygal需要分两次导入吗?有什么好处吗?
x_labels=names add中加入实参stars。
1、改进Pygal图表
创建一个pygal下Config类的实例,修改其中属性可以定制图表外观。
修改各种属性后,将Config的实例作为第一个实参传递到Bar()中。
2、添加自定义工具提示
对add()方法中传入字典列表(注意还是列表,但是是字典列表)而不是值列表,则在鼠标移到相应的柱形图上时会显示字典中label的值。字典中的的值的键为‘value',相对应的标签的键为'label'。
3、根据数据绘图
根据上述自定义的方法,将星值和标签传递给相应的键,形成字典列表,传递给add()方法。
4、在图表中添加可单击的链接
只需在字典列表中创建一个键为‘xlink',值为相应url的键值对。
17.3 Hacker News API
概述:在url:https://hacker-news.firebaseio.com/v0/topstories.json链接的API下返回的响应是一个元素为一串串数字的json文件,通过response.json()将其转换为列表,进而通过遍历列表中的每个元素并通过url组装,即:'https://hacker-news.firebaseio.com/v0/item'+遍历的元素变量+'.json'来重组一个热点文章的API,再通过获得该组装url的响应,获得一个类似字典的json文件,通过response.json()转换为字典文件。再通过整理后从中筛选出需要的数据。
在我们不确定字典中是否有某个键时,可以通过dict.get('key',x)方法来确定,当字典中存在键key时将返回相应的值,如不存在键key的时候返回指定的x。
在模块operator下的itemgetter()函数,用来获取对象某个位置的数据,在本例中,通过itemgetter('comments')来获得评论数的值,将该值作为key来sorted整理列表,同时整理的方式为倒过来的,即reverse=True。即创建的字典列表通过评论数由高到低排列。
关于如何获得站点的API接口,需要通过在network下进行抓取,意思可能是要去学习html或者php语言了。