爬虫系列:使用 API-阿里云开发者社区

开发者社区> 黄兵的博客> 正文

爬虫系列:使用 API

简介: 爬虫系列:使用 API
+关注继续查看

应用编程接口(Application Programming Interface, API)的用处:它为不同的应用提供了方便友好的接口。不同的开发者用不同的架构,甚至是不同的语言编写软件都没有问题——因为 API 设计的目的就是要成为一种通信语言,让不同的软件进行信息共享。

尽管目前不同的软件应用都有各自不同的 API,但“API”经常被看成“网络应用 API”,一般情况下,程序员可以用 HTTP 协议向 API 发起请求以获取某种信息,API 会用 XML(eXtensible Markup Language,可扩展标记语言)或 JSON (Javascript Object Notation,Javascript 对象表示)格式返回服务器响应的信息。尽管大多数 API 仍然在使用 XML,但是 JSON 正在快速成为数据编码格式的主流选择。

虽然这种即开即用的接口获取预先打包好的信息,看起来好像和爬虫没有什么关系,但是这种看法只是对了一半。虽然大多数人通常不会把使用 API 看成网络数据采集,但是实际上这两者使用的许多技术(都是发送 HTTP 请求)和产生的结果(都是获取信息)差不太多,两者经常是相辅相成的关系。

例如,你可能会把网络爬虫和 API 获取的信息组合起来,因为这样的信息可能更有意义。

API 概述
虽然 API 并非随处可见,但是你可以通过 API 里获取许多有用信息。如果你对音乐感兴趣,有提供歌曲名称、歌手、专辑的信息 API。

下面是 API 调用的一个示例:

https://api.bigdatacloud.net/data/ip-geolocation-full?ip=27.30.84.181&localityLanguage=zh&key=bee73355d8ad4821a1c393c545e7f0

你通过浏览器输入以上网址,就可以发起一个简单的 API 调用,结果如下:

{
"ip": "199.21.99.90",
"localityLanguageRequested": "zh",
"isReachableGlobally": true,
"country": {

"isoAlpha2": "US",
"isoAlpha3": "USA",
"m49Code": 840,
"name": "美国",
"isoName": "United States of America (the)",
"isoNameFull": "the United States of America",
"isoAdminLanguages": [
{
    "isoAlpha3": "eng",
    "isoAlpha2": "en",
    "isoName": "English",
    "nativeName": "English"
}
],
"unRegion": "Europe and Northern America/Northern America",
"currency": {
"numericCode": 840,
"code": "USD",
"name": "US Dollar",
"minorUnits": 2
},
"wbRegion": {
"id": "NAC",
"iso2Code": "XU",
"value": "North America"
},
"wbIncomeLevel": {
"id": "HIC",
"iso2Code": "XD",
"value": "High income"
},
"callingCode": "1",
"countryFlagEmoji": "

上面节选了部分结果。

你可能会想,这不就是在浏览器窗口输入一个网址,然后回车获取的(只是 JSON 格式)信息吗?究竟 API 调用和普通的网址访问有什么区别呢?如果不考虑 API 高大上的名称,其实两者没啥区别。API 可以通过 HTTP 协议下载文件,和 URL 访问网站获取数据的协议一样。它可以实现所有现在网上干的事情。API 之所以叫 API 而不叫网站的原因,其实是首先 API 有非常严谨的语法,其次 API 用 JSON 或 XML 格式表示数据,而不是 HTML 格式。

以上讲解了 API 的相关概念,获取 API 的数据,一般是 JSON 数据,我们看看在 Python 中如何解析 JSON 数据。

解析 JSON 数据
下面我们还是以刚才的例子,看看如何通过 API 获取的 JSON 数据得到需要的结果:

import requests

class ScrapeAPI(object):

def __init__(self):
    self._api_url = 'https://api.bigdatacloud.net/data/ip-geolocation-full?ip=27.30.84.181&localityLanguage=zh&key=bee73355d8ad4821a1c19345e7f0'

def get_geolocation(self):
    init_session = requests.Session()
    response = init_session.get(self._api_url)
    json_result = response.json()
    get_country = json_result['country']['name']
    get_location = json_result['location']
    get_region = get_location['isoPrincipalSubdivision']
    get_city = get_location['city']
    get_locality_name = get_location['localityName']
    area = f'当前 IP 国家:{get_country},地区:{get_region},城市:{get_city},区划:{get_locality_name}'
    print(area)

if name == '__main__':

ScrapeAPI().get_geolocation()

以上代码使用的是 requests 库对 JSON 数据进行解析,运行代码就可以得到我们需要的结果。

以上就是今天关于 API 相关的内容。

如果喜欢欢迎订阅我的频道。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python编程-29:Scrapy爬虫基本使用
python编程-29:Scrapy爬虫基本使用
15 0
C#爬虫使用代理刷csdn文章浏览量
昨天写了一篇关于“c#批量抓取免费代理并验证有效性”的文章,接着昨天的目标继续完成吧,最终实现的目的就是刷新csdn文章的浏览量(实际上很简单,之前博客园的文章也是可以使用代理ip来刷的,后来不行了),刷文章的浏览量本身是可耻的,没有任何意义,当然技术无罪。
1369 0
分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习。 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力; 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大量的实例加深对概念的理解; 实例操作是对概念最好的理解,也是学习新语言最有效的办法; 在课程中也穿插着大量软件开发的技巧和大家分享; 应该是把晦涩的正则表达式讲解的最生动的课程; 掌握了正则表达式后,您一定会觉得这是一门最值得掌握的语言。
886 0
PolarDB-X 1.0-API参考-1.0(2017版本)-OpenAPI使用-请求结构
OpenAPI 服务地址 PolarDB-X API 的服务接入地址为:drds.aliyuncs.com。
7 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3950 0
爬虫系列:使用 API
爬虫系列:使用 API
32 0
python网络爬虫(14)使用Scrapy搭建爬虫框架
python网络爬虫(14)使用Scrapy搭建爬虫框架阅读目录 目的意义说明创建scrapy工程一些介绍说明创建爬虫模块-下载强化爬虫模块-解析强化爬虫模块-包装数据强化爬虫模块-翻页强化爬虫模块-存储强化爬虫模块-图像下载保存启动爬虫修正目的意义爬虫框架也许能简化工作量,提高效率等。
1037 0
PolarDB-X 1.0-API参考-1.0(2017版本)-OpenAPI使用-OpenAPI概览
实例管理类 API 实例管理类 API 可实现对 PolarDB-X 实例的生命周期管理,主要包括创建实例、查询实例、释放实例等操作,如下表所示。
7 0
7
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载