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)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特 ...
随机推荐
- UVA - 1451 Average (斜率优化)
题意:由01组成的长度为n的子串,AT由0表示,GC由1表示,求一段长度大于等于L且GC率最高的子串的起始终止坐标,若GC率相同,取长度较小,若长度相同,取起始坐标最小. 分析: 1.一个子串(i+1 ...
- POJ 3735:Training little cats 联想到矩阵相乘
Training little cats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11208 Accepted: ...
- Win10下用selenium、Image.crop() 截图时、坐标不准确的问题
截百度按钮的图 先将整个窗口的图保存下来 from selenium import webdriver driver = webdriver.Chrome() driver.get('https:// ...
- 九十四、SAP中ALV事件之八,显示功能按钮栏
一.我们把其他代码都注释掉,直接写一行调用 SET PF-STATUS 'TIANPAN_TOOLS'. 二.运行程序,会看到我们上一篇所添加的相关功能栏图标, 三.点击不同图标,会按程序代码,有不同 ...
- 【机器学习实战笔记(3-2)】朴素贝叶斯法及应用的python实现
文章目录 1.朴素贝叶斯法的Python实现 1.1 准备数据:从文本中构建词向量 1.2 训练算法:从词向量计算概率 1.3 测试算法:根据现实情况修改分类器 1.4 准备数据:文档词袋模型 2.示 ...
- 【iOS】Swift4.0 GCD的使用笔记
https://www.jianshu.com/p/47e45367e524 前言 在Swift4.0版本中GCD的常用方法还是有比较大的改动,这里做个简单的整理汇总. GCD的队列 队列是一种遵循先 ...
- C# NPOI的数据批量导入数据库
public ActionResult Upload(HttpPostedFileBase Namefile) { //判断文件是否存在 if ...
- JavaWeb学习记录
服务器端跳转(请求重定向): 1.jsp内跳转 : <jsp:forward page="page_scope_03.jsp"/> 客户端跳转(请求转发): 1.通过超 ...
- Web基础之Servlet
Servlet Servlet : server applet,直译服务小程序.那Servlet到底是什么呢? Servlet说白了其实就是一个接口,接口的作用是什么?规范呗,这个接口规定了下面三个问 ...
- C++的vector容器清空
c++内部STL库中自带了一个容器vetcor, 自带了清空方法——clear().但是clear使用之后,并不能清空数据,其数据再未被覆盖之前是不会改变的,个人猜测clear仅仅把指针挪动到了起始位 ...