Python网络数据采集之使用API|第03天
User:DemoChen
Date:2018-03-30
Mark:《Python网络数据采集》
网络采集系列文章
Python网络数据采集之创建爬虫
Python网络数据采集之HTML解析
Python网络数据采集之开始采集
使用API
API概述
百度百科关于API
的解释:API
(Application Programming Interface
,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
说明这就是接口,不受其语言的限制都可以调用。
API通用规则
API
用一套非常标准的规则生成数据,而且生成的数据也是按照非常标准的方式组织的。
方法
利用HTTP
请求网络服务器信息的方法有很多种,这里举例常用的四种:
GET
:从服务器获取数据的方法;
POST
:向服务器发送数据。例如提交表单到服务器处理的逻辑;
PUT
:主要用来更新一个对象或信息,一般很少用到;
DELETE
:从服务器删除一个对象。
验证
API
并不是随时或者谁都可以调用的。为了保证服务器上的安全或者减少资源等目的,我们会对请求的方法或者次数有限制。通常情况会对接口进行验证,一般的验证方法是令牌(token
),这个令牌一般是用户登录或者注册的时候从服务器生成然后给用户。令牌可以是可变的,也可以是不可变的。令牌除了在 URL
链接中传递,还会通过请求头里的 cookie
把用户信息传递给服务器。
简单示例:
token = "<your api key>"
webRequest = urllib.request.Request("http://myapi.com", headers={"token":token})
html = urlopen(webRequest)
服务器响应
服务器响应的数据格式一般是JSON
或者XML
。目前JSON
比较多,原因有很多,其中一点就是JSON
文件比完整的 XML
格式小;加上网络技术的改变,后端的语言越来越多,基本上都可以实现接口。
API
调用的语法也有不同,但也有约定俗成的准则。例如,当使用 GET
请求获取数据时,用URL
路径描述你要获取的数据范围,查询参数可以作为过滤器或附加请求使用;也有许多 API
会通过文件路径(path)的形式指定 API
版本、数据格式和其他属性;还有一些 API
会通过请求参数(request parameter)
的形式指定数据格式和 API
版本:
市面上比较多的公司或者网站都有自己的公开的接口,例如推特,Google
等。
解析JSON数据
例如我们采用GET
的方式请求http://freegeoip.net/json/50.78.253.58
,查看返回的数据。返回为:
{"ip":"50.78.253.58","country_code":"US","country_name":"United States","region_code":"MA","region_name":"Massachusetts","city":"Boston","zip_code":"02116","time_zone":"America/New_York","latitude":42.3496,"longitude":-71.0746,"metro_code":506}
现在我们采用Python
来解析。JSON
是Python
的标准库,不需要额外安装。代码如下:
import json
from urllib.request import urlopen
def getCountry(ipAddress):
res = urlopen("http://freegeoip.net/json/"+ipAddress).read().decode('utf-8')
resJson = json.loads(res)
return resJson.get('country_code')
print(getCountry("22.18.53.22"))
Python 使用了一种更加灵活的方式,把 JSON 转换成字典,JSON 数组转换成列表,JSON 字符串转换成 Python 字符串。
今天的比较简单哈哈,这么快就完了。我觉得有过开发经验这点完全可以忽略了。关注我,可以看到后续的文章更新。欢迎讨论。
博客原文链接:https://chensenlin.cn/posts/37773/
欢迎你免费加入我的星球,一起分享,共同成长。
![](https://img.haomeiwen.com/i1262381/313de7cb370f2060.jpg)
网友评论