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
python中的API学习的更多相关文章
- python中confIgparser模块学习
python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
- Python中字符串的学习
Python中字符串的学习 一.字符串的格式化输出 % 占位符 %s 字符串 %d integer %x 十六进制 integer %f float 指定长度 %5d 右对齐,不足左边补空格 %-5d ...
- 2019-04-15 Python中的面向对象学习总结
一.面向对象总结: (1)三要素:封装,继承,多态 详细介绍链接:https://www.jianshu.com/p/68a ...
- python中的configparse学习笔记
configparse主要用于在python中进行配置文件的读取. 基本的读取配置文件: -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以 ...
- Python中的json学习
p.p1 { margin: 0; font: 14px ".PingFang SC"; color: rgba(53, 53, 53, 1) } p.p2 { margin: 0 ...
- Python中的redis学习笔记
redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...
- Java 8中Stream API学习笔记
1)函数式编程的优势和劣势分别是什么?优势:①不可变性 ②并行操作 ③执行顺序更灵活 ④代码更加简洁纯粹的函数式编程,变量具有不可变性,同一个参数不会在不同场景下得出不同的结果,因此大大增强了系统的稳 ...
- python中strip()方法学习笔记
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格). 当使用strip('xxx'),只要字符串头尾有"xxx"中的一个,就会去掉,而不是符合字符串''x ...
- python中的面向对象学习以及类的多态
接下来类的第三个重要的特性:多态(一种接口,多种实现) 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特 ...
随机推荐
- JS - 获取页面滚动的高度
document.documentElement.scrollTop||document.body.scrollTop
- HTML的文档结构与语法(二)
3.7 超链接标记 语法:<a 属性=“值”>对当前链接的描述</a> 作用:网页进行跳转 常用的属性: Href:链接的网址或ip或地址 值:就是具体的地址 T ...
- Spring-IOC(基于注解)
1.Spring 的 Bean 管理:(注解方式) 1.1 创建 web 项目,引入 Spring 的开发包: 注:在 Spring 的注解的 AOP 中需要引入 spring-aop 的 jar 包 ...
- WinForm读写App.config配置文件
一.配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是conf ...
- web前端知识点
一.CSS问题 1.flex布局 display:flex; 在父元素设置,子元素受弹性盒影响,默认排成一行,如果超出一行,按比例压缩 flex:1; 子元素设置,设置子元素如何分配父元素的空间,fl ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不 ...
- sprngmvc+restFul 请求报错:404
服务端代码 control类 @RequestMapping(value="getUser",method = RequestMethod.POST) @ResponseBody ...
- JS - 解决引入 js 文件无效的问题
增加 type 即可 <script type="text/javascript" src="....js"></script>
- 在Mac上使用docker+sql server+Navicat
1. 版本: 2. 安装Kubernetes(并不知道安装这个有什么用) git clone https://github.com/maguowei/k8s-docker-desktop-for-m ...
- BZOJ:3231: [Sdoi2008]递归数列
题解: 矩阵乘法,在矩阵中构造当前前缀和: 注意:for(int/long long ;;); #include<iostream> #include<cstdio> #inc ...