hznnzh

导航

python中的API学习

URL

url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

Web API:

Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。

使用pip下载repuest:

​接下来我们用requests来访问github上的信息:

 

 首先我们导入requests模块,然后将URL存入一个变量中,我们调用函数get并且把URL传递给它,然后将响应对象存在变量r中,响应对象中有一个属性status_code,它返回一个状态码,状态码为200,表示请求成功。

因为这个API返回JSON格式的信息,因此我们使用方法json() 将这些信息转换为一个Python字典,并把它存在一个变量中,

接下来就可以用这个字典访问里面的一些数据,键('total_count')表示里面的项目,我们可以看到输出有3428458个项目。然后我们再把这个字典中的键('items')所对的值传递给一个变量,这个值是一个字典列表,我们可以看到它一共有73个字典,我们将这个列表的第一个元素也就是第一个字典传递给一个变量,然后我们输出这个字典的所有键,如图所示。

我们可以用遍历的方法访问列表中每一个字典,然后得到每个字典中的一些数据。

监视API的速率限制:

                                在网页上输入https://api.github.com/rate_limit ,我们可以看到:

 

我们在search那里可以看到  limit=10表示极限为每分钟10个请求,remaining表示这一分钟内我们还可以请求10次。

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

使用pygal可视化仓库:

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS,LightenStyle as LS
url='https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code:",r.status_code)
reponse_dict = r.json()
print("Toal repositories:",reponse_dict['total_count'])
repos=reponse_dict['items']
names,stars = [],[]
for repo in repos:
	names.append(repo['name'])
	stars.append(repo['stargazers_count'])
my_style=LS('#333366',base_style=LCS)
chart=pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False)
chart.title="cong python shang huo qu de shuju"
chart.x_labels=names
chart.add('tubiao',stars)
chart.render_to_file('dran_python_keshihua.svg')

访问成功,然后我们打开浏览器查看一下:

首先我们导入了requests和pygal,然后又从pygal.style中导入了类LightColorizedStyle和类LightenStyle,并且分别给了别名。

类LightenStyle可以指定基色。然后我们照常通过requests.get()函数访问API,然后把响应对象给一个变量,再通过响应对象访问json()函数,把访问的结果转换成字典再存入一个变量,然后把字典中有关项目的列表提出来给一个变量,这个列表是一个字典列表,里面存储了用户信息。然后创建两个空列表,用遍历的方法把列表中的每一个字典中的部分信息分别存入两个空列表。

这两个空列表就作为我们绘图的数据。

接下来,我们使用LightenStyle 类(别名LS )定义了一种样式,并将其基色设置为深蓝色。我们还传递了实参base_style ,以使用LightColorizedStyle 类(别名LCS )。然后,我们使用Bar() 创建一个简单的条形图,并向它传递了my_style 。我们还传递了另外两个样式实参:让标签绕x 轴旋转45度(x_label_rotation=45 ),并隐藏了图例(show_legend=False ),因为我们只在图表中绘制一个数据系列。接下来,我们给图表指定了标题,并将属性x_labels 设置为列表names。最后用函数add()传递纵坐标数据,然后保存文件。

优化图像:

my_config=pygal.Config()
my_config.x_label_rotation=45
my_config.show_legend=False
my_config.title_font_size=24
my_config.major_label_font_size=18
my_config.truncate_label=15
my_config.width=1000
my_config.show_y_guides=False

chart=pygal.Bar(my_config,style=my_style)

             我们可以创建一个pygal.Config()的实例来优化代码,通过修改Config的属性我们可以对图像进行调整。x_label_rotation=45表示让x轴的坐标倾斜45度。

show_lengend=False隐藏图例

title_font_size指定图标标题尺寸

major_label_font_size指定主标题尺寸

truncate_label指定副标题尺寸

width 自定义宽度

show_y_guides=False 隐藏水平线

然后直接给Bar传递实例作为参数就可以了。

我们还可以给add函数传递一个字典列表来添加自定义工具提示。

根据数据绘图:

names,stars = [],[]
for repo in repos:
	names.append(repo['name'])
	dicts={
	'value':repo['stargazers_count'],
	'label':str(repo['description']),
	}
	stars.append(dicts)

          注意:一开始总报错:

​          

 后来才知道

这个报错信息提示有一个变量的值是NoneNone 的类型是NoneType , 它没有decode 方法。把repo_dict['description']转为str形式就好了。

在图标中添加可单击的连接:

                            只需添加一行代码,在字典中添加一个键对值'xlink':repo['html_url'](这个repo是对应上面的代码的)。

Hacker news API:

                            from operator import itemgetter。

submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),reverse=True)

submission_dicts是一个字典列表,我们使用方法itemgette,在排序函数sorted中向参数key传递itemgetter('comments'),这个方法将会从这个列表的每一个字典中找出与键comments相关的数,然后sorted会根据这个数来进行排序。

学习使用Django:

                            Django是一个Web框架 ——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等。

建立虚拟环境:

                  先安装virtutualenv包

然后激活虚拟环境,命令:ll_env\Scripts\activate

要停止使用虚拟环境:deactivate:

搭建完成。

开始安装Django:

 安装完成。

新建项目:使用指令(django-admin.py startproject learning_log  .)注意不能忘了这个句点,句点前面要空一格。

我们新建了一个叫learning_log的项目,可以用指令   dir 项目名  来查看目录。

我们查看一下电脑中是否真的建立了这几个文件

 

 目录learning_log包含4个文件,其中最重要的是settings.py、urls.py和wsgi.py。文件settings.py指定Django如何与你的系统交互以及如何管理项目。在开发项目的过程中,我们将修改其中一些设置,并添加一些设置。文件urls.py告诉Django应创建哪些网页来响应浏览器请求。文件wsgi.py帮助Django提供它创建的文件,这个文件名是web server gateway
interface(Web服务器网关接口 )的首字母缩写。

 创建数据库:

我们使用命令migrate,我们将修改数据库称为迁移 数据库。首次执行命令migrate 时,将让Django确保数据库与项目的当前状态匹配。在使用SQLite(后面将更详细地介绍)的新项目中首次执行这个命令时,Django将新建一个数据库。Django指出它将创建必要的数据库表,用于存储我们将在这个项目(Synchronize unmigrated apps,同步未迁移的应用程序 )中使用的
信息,再确保数据库结构与当前代码(Apply allmigrations,应用所有的迁移 )匹配。

 

 我们再输入dir:

输入命令 python manage.py runserver  来查看:

 Django启动一个服务器,让你能够查看系统中的项目,了解它们的工作情况。当你在浏览器中输入URL以请求网页时,Django服务器将进行响应:生成合适的网页,并将其发送给浏览器。

 

 nice~

创建应用程序:

                   再打开一个窗口,ll_env\Scripts\activate,然后python manage.py startapp learning_logs。再用dir查看一下,发现多了一个文件learning_logs

 

posted on 2020-02-11 16:42  hznnzh  阅读(360)  评论(0编辑  收藏  举报