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)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特 ...
随机推荐
- bzoj 3522: [Poi2014]Hotel
呵呵,一开始天真的我以为求个 西格玛 C(??,3)就好了.. (题解:比枚举2个数的再多一个,,一样搞) #include <bits/stdc++.h> #define LL long ...
- Python 中 configparser 配置文件的读写及封装,配置文件存放数据,方便修改
1. 将程序中不常变化的数据放在配置文件中,有什么好处? 将配置统一放在一起,进行统一管理,方便维护,方便修改 配置文件将存放测试数据比如: Excel文件名. 日志名. 用例执行的结果. 实际结果和 ...
- jQuery省市联动(XML/JSON)
准备: 导包 在src下导入c3p0-config.xml 导入JDBCUtil 创建数据库 新建js文件夹导入jQuery配置文件 NO01:创建city.jsp页面 <%@ page lan ...
- 三十九、SAP中多语言的处理
一.点击菜单翻译 二.选择目标语言 三.输入需要翻译的内容,并保存 四.我们切换到英语模式登录 五.查看我们的代码 六.输出结果如下,多语言特征就显示了
- css实现下箭头
css实现下箭头 .top { width:; height:; border-left: 10px solid transparent; border-right: 10px solid trans ...
- POJ 3368:Frequent values
Frequent values Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14764 Accepted: 5361 ...
- tableau中图形分析相关设置
1.柱形堆叠图单元格顶部显示总计值(可通过参考线实现) 2.调节图形单元格的宽窄度 (ctrl + 右键/左键) 3.折线图预测区间 趋势区间线 分析中预测并不是针对所有的日期格式均其作用,比如日期格 ...
- java课程之团队开发冲刺阶段2.8
昨日总结: 1.具体情况已经写在了昨天的当日总结当中 遇到的问题: 1.toolbar的返回键与菜单键冲突,导致无法同时使用 今天的任务: 1.完整实现课程查询任务 当日总结: 1.完整实现,唯一的遗 ...
- java课程课后作业190530之找水王
从题目中我们可以看出,水王有着相当严苛的条件才可以成为,那就是必须拥有一半的评论量才可以当上水王.当然这就是破题的关键,最简单的算法当然是用O(N平方)的复杂度的那种算法,但显然,我们需要的不是这种. ...
- JAVA字节码文件之第四篇(方法分析)
一.Methods 方法字节码结构 Methods 字节码结构: Methods num:占两byte,Methods 的具体内存占n个byte 方法中每个属性都是Attribute_info,Att ...