python使用API

本人从2017年4月初开始学习python,截至到6月13号学习python已经有2.5个月了,这段时间以来学习了搭环境、变量、列表、If、字典、while循环、函数、类、处理文件、测试代码等,接下来将学习API调用。

API:

Web应用编程接口(API)自动请求网站的特定信息而不是整个网页。因此即便数据瞬息万变,它呈现的信息也都是最新的。


17.1 使用Web API

Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。请求的数据将以易于处理的格式(如JSON或CSV)返回。依赖于外部数据源的大多数应用程序都依赖于API调用。


17.1.1 Git 和GitHub

我们将使用GitHub的API来请求有关该网站中Python项目的信息,GitHubhttps://github.com/)的名字源自Git,Git是一个分布式版本控制系统,让程序员团队能

够协作开发项目。

Git帮助大家管理为项目所做的工作,避免一个人所做的修改影响其他人所做的修改。

你在项目中实现新功能时,Git将跟踪你对每个文件所做的修改。确定代码可行后,你提交所做的修改,而Git将记录项目最新的状态。


D.1.3在Windows 系统中安装Git

要在Windows系统中安装Git,请访问http://msysgit.github.io/,并单击Download。


D.1.4 配置Git

Git跟踪谁修改了项目,哪怕参与项目开发的人只有一个。为此,Git需要知道你的用户名和

电子邮件地址。你必须提供用户名,但可以使用虚构的电子邮件地址:

$ git config --global user.name "username"

$ git config --global user.email "username@example.com"


D.2 创建项目

在你的系统中创建一个文件夹,并将其命名为git_practice。在这个文件夹中,创建一个简单的Python程序:

hello_world.py

print("Hello Git world!")

我们将使用这个程序来探索Git的基本功能。


D.3 忽略文件

扩展名为.pyc的文件是根据.py文件自动生成的,因此我们无需让Git跟踪它们。这些文件存储在目录__pycache__中。为让Git忽略这个目录,创建一个名为.gitignore的特殊文件(这个文件名以句点打头,且没有扩展名),并在其中添加下面一行内容:

.gitignore

__pycache__/

这让Git忽略目录__pycache__中的所有文件。使用文件.gitignore可避免项目混乱,开发起来更容易。


D.4 初始化仓库

你创建了一个目录,其中包含一个Python文件和一个.gitignore文件,可以初始化一个Git仓库了。为此,打开一个终端窗口,切换到文件夹git_practice,并执行如下命令:

git_practice$ git init

Initialized empty Git repository in git_practice/.git/

git_practice$

输出表明Git在git_practice中初始化了一个空仓库仓库是程序中被Git主动跟踪的一组文件。

Git用来管理仓库的文件都存储在隐藏的.git/中,你根本不需要与这个目录打交道,但千万不要删除这个目录,否则将丢弃项目的所有历史记录。


D.5 检查状态

执行其他操作前,先来看一下项目的状态:

git_practice$ git status .

在Git中,分支是项目的一个版本。从这里的输出可知,我们位于分支master上。你每次查看项目的状态时,输出都将指出你位于分支master上。

接下来的输出表明,我们将进行初始提交。提交是项目在特定时间点的快照


检查状态

# Untracked files: 

Git指出了项目中未被跟踪的文件,因为我们还没有告诉它要跟踪哪些文件。


nothing added to commit but untracked files present (use "git add" to track)

我们被告知没有将任何东西添加到当前提交中,但我们可能需要将未跟踪的文件加入到仓库中


17.1.2 使用API 调用请求数据

GitHub的API让你能够通过API调用来请求各种信息。这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。

https://api.github.com/search/repositories?q=language:python&sort=stars

第一部分(https://api.github.com/)将请求发送到GitHub网站中响应API调用的部分

第二部分(search/repositories)让API搜索GitHub上的所有仓库。

第三部分(repositories后面的?)指出我们要传递的实参

第四部分(q=)q表示查询,= 符号让我们能够开始指定查询(q=)

第五部分(language:python)指出只想获取主要语言为python的仓库的信息

第六部分(&sort=stars) 指定将项目按其获得的星级进行排序。


17.1.3 安装requests

requests包让Python程序能够轻松地向网站请求信,息以及检查返回的响应


安装requests

1.  导入了模块requests

2.  存储API调用的URL

3. 使用requests来执行调用,调用get()并将URL传递给它,再将响应对象存储在变量r中,响应对象包含一个名为status_code的属性,它让我们知道请求是否成功了。

4. 打印status_code,核实调用是否成功了。

5. API返回JSON格式的信息,因此我们使用方法json()将这些信息转换为一个Python字典。我们将转换得到的字典存储在response_dict中。

最后,打印response_dict中的键。


17.1.5 处理响应字典

将API调用返回的信息存储到字典中后,就可以处理这个字典中的数据了。

生成一些概述这些信息的输出,可确认收到了期望的信息,进而可以开始研究感兴趣的信息


处理响应字典

print("Total repositories:", response_dict['total_count'])

打印了与'total_count'相关联的值,它指出了GitHub总共包含多少个Python仓库。

与'items'相关联的值是一个列表,其中包含很多字典,而每个字典都包含有关一个Python仓库的信息。


repo_dicts = response_dict['items']

print("Repositories returned:", len(repo_dicts))

我们将这个字典列表存储在repo_dicts中。接下来,我们打印repo_dicts的长度,以获悉我们获得了多少个仓库的信息。


repo_dict = repo_dicts[0]

为更深入地了解返回的有关每个仓库的信息,我们提取了repo_dicts中的第一个字典,并将其存储在repo_dict中。


print("\nKeys:", len(repo_dict))

我们打印这个字典包含的键数,看看其中有多少信息。


for key in sorted(repo_dict.keys()):

         print(key)

我们打印这个字典的所有键,看看其中包含哪些信息。



17.1.6 概述最受欢迎的仓库

对这些数据进行可视化时,我们需要涵盖多个仓库。打印API调用返回的每个仓库的特定信息,以便能够在可视化中包含所有这些信息



17.1.7 监视API 的速率限制

大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。要获悉你是否接近了GitHub的限制,请在浏览器中输入https://api.github.com/rate_limit


"search": {

搜索API的速率限制


"limit": 10,

极限为每分钟10个请求


"remaining": 8,

在当前这一分钟内,我们还可执行8个请求。


"reset": 1426078803

reset值指的是配额将重置的Unix时间或新纪元时间(1970年1月1日午夜后多少秒)

用完配额后,你将收到一条简单的响应,由此知道已到达API极限。到达极限后,你必须等待配额重置。


注意 很多API都要求你注册获得API密钥后才能执行API调用。编写本书时,GitHub没有这样的要求,但获得API密钥后,配额将高得多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容