优化的解决方案:简单的API爬虫(和风天气数据获取)
优采云 发布时间: 2022-10-25 11:25优化的解决方案:简单的API爬虫(和风天气数据获取)
内容简介
不知不觉中,我已经快高三了,接触过 C、C++ 和 Python。但我觉得一切都可以一点点,但想了想,也无能为力,最后还是决定开始精通Python之路。从爬虫到数据分析,最后到机器学习。希望每天都有收获。今天开始系统地学习爬虫。
1.什么是API?
总之就是一个接口,你可以通过携带一些参数来访问这个接口来获取你想要的数据。
这次我们使用 Zephyr Weather 提供的 API 来获取我们需要的天气数据。
2. 步骤
这一次,我们将编写一个程序,可以根据我们输入的城市名称获取相关的天气数据。
1.注册一个Zephyr账号
网址:
注册后,登录并在应用管理中新建一个Web API类型的应用。记得在创建后复制KEY的值,这个很重要!!!
然后,我们就可以根据泽风天气提供的API开发文档开始编写代码了。
API开发文档
2.获取位置
首先,通过查询API开发文档,发现需要请求【请求参数】URL。有两个参数是必须携带的,一个是我上面提到的KEY值,另一个是代表城市的位置。location 可以是 LocationID 或逗号分隔的经度、纬度坐标(十进制)。
泽风天气提供了一个存储LocationID的文档,也有对应的请求URL。LocationID 文件下载地址
请求URL为【请求参数】,有两个参数必须携带,一个是KEY,一个是location(要查询的区域名称,支持文本,经纬度坐标(十进制)用英文隔开)逗号)、LocationID 或 Adcode(仅限中国城市)。
我们首先请求第二个 URL 来获取 LocationID。
代码显示如下:
#coding:utf-8
import requests
import json
def getID(address,key):
# address='北京'
url = f'https://geoapi.qweather.com/v2/city/lookup?location={address}&key={key}'
datas = requests.get(url).json()
# print(data)
<p>
# print(type(datas))
for data in datas['location']:
if data['name'] == address:
ID = data['id']
return ID
</p>
获取到的数据是字符串类型的,我们通过将其转换为json格式来提取我们需要的位置。
3.获取天气数据
代码显示如下:
def getData(address,ID,key):
url = f'https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}'
datas = requests.get(url).json()
data_updateTime = datas['updateTime']
data_time = datas['now']['obsTime']
data_temp = datas['now']['temp']
data_feelsLike = datas['now']['feelsLike']
data_text = datas['now']['text']
data_vis = datas['now']['vis']
print('{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n'.format(address,data_updateTime,data_time,data_temp,data_feelsLike,data_text,data_vis))
这段代码不难,获取数据的格式是需要注意的。
4.完整代码
#coding:utf-8
import requests
import json
def getID(address,key):
# address = '北京'
url = f'https://geoapi.qweather.com/v2/city/lookup?location={address}&key={key}'
<p>
datas = requests.get(url).json()
# print(data)
# print(type(datas))
for data in datas['location']:
if data['name'] == address:
ID = data['id']
return ID
def getData(address,ID,key):
url = f'https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}'
datas = requests.get(url).json()
data_updateTime = datas['updateTime']
data_time = datas['now']['obsTime']
data_temp = datas['now']['temp']
data_feelsLike = datas['now']['feelsLike']
data_text = datas['now']['text']
data_vis = datas['now']['vis']
print('{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n'.format(address,data_updateTime,data_time,data_temp,data_feelsLike,data_text,data_vis))
if __name__ == '__main__':
key = '******' //填入你自己的KEY值
address = input('请输入要查询的天气:')
ID = getID(address,key)
getData(address, ID, key)
</p>
总结
以上就是我们今天要讲的内容。本文仅简单介绍 API 的使用。我们可以通过API开发文档轻松获取我们需要的数据。
如果需要其他关于泽风天气的数据,可以到API开发文档中获取。
成熟的解决方案:阿里云如何打破Oracle迁移上云的壁垒
摘要:在2018年第九届中国数据库技术大会上,阿里云数据库产品专家肖少聪就阿里云如何打破Oracle上云的壁垒发表了演讲。Oracle 指的是“数据库管理系统”。面对甲骨文迁移上云的壁垒,阿里云又该如何打破呢?本文提出了一种从 Oracle 迁移到云数据库的 PPAS 解决方案。为什么这个迁移方案比从Oracle迁移到MySQL系列更容易推广?答案即将揭晓。
2018年第九届中国数据库技术大会上,阿里云数据库产品专家肖少聪就阿里云如何打破Oracle上云壁垒发表演讲。Oracle 指的是“数据库管理系统”。面对甲骨文迁移上云的壁垒,阿里云又该如何打破呢?本文提出了一种从 Oracle 迁移到云数据库的 PPAS 解决方案。为什么这个迁移方案比从Oracle迁移到MySQL系列更容易推广?答案即将揭晓。
现场视频回顾
PPT下载请点击
以下是视频内容的亮点:
Oracle 数据库迁移解决方案
数据业务架构主要分为三大部分:服务器、应用程序、数据库系统和存储系统。解决云服务器和存储系统的问题相对容易,但解决应用程序和数据库系统的问题就有些困难了。因此,阿里云提供了上述解决方案。在这个方案中,用户可以通过不同的方式将数据库迁移到云端,我们可以继续在ECS中运行Oracle,也可以迁移到MySQL。当然,应用程序和数据库系统也可以迁移到 PPAS 版。凭借与Oracle的高度兼容性,降低了用户上云的难度,降低了系统长期运维的复杂度。
阿里云不仅为云用户提供同城容灾、自动备份、时间点恢复等功能。阿里云数据库还会加入高可用HA,一般需要两个或更多节点进行复杂的配置。在阿里云中,用户一键即可拥有高可用HA,这样的HA集群不仅可以搭建在同一个数据中心,还可以支持同城双中心、异地容灾,同样的一键部署就完成了。同时,阿里云还为用户提供ADAM(Advanced Database & Application Migration “亚当”)工具,借助PPAS的Oracle兼容性,协助用户进行快速迁移。那么接下来的迁移步骤应该如何进行呢?
在Oracle上安装ADAM采集,ADMA会扮演三个角色:
Oracle 迁移到 PPAS 比迁移到其他数据库更顺畅,因为有很多兼容的地方。Oracle数据库到PPAS要兼容SQL、存储过程、包、DBMS等,所以适合复杂事务的迁移。ApsaraDB for PPAS 提供高达 3TB 的本地高性能存储(据悉,该空间在今年内有机会超过 10TB)。如果业务数据超出本地存储容量,可以使用OSS存储进行外表处理。例如,历史数据可以存储在 OSS 外部表中。此信息不经常使用,但对数据分析很重要。因此,我们可以通过阿里云HybridDB for PostgreSQL直接从OSS获取数据进行业务分析。HybridDB for PostgreSQL 是阿里云 基于开源Greenplum Database分布式MPP数据库的自己的发布版本。可实现实时业务分析,将计算节点和空间横向扩展至PB级,特定场景下百亿条记录<10ms*排序,支持Rank Hybrid、CUBE、ROLLUP、MADlib学习等。
Oracle 数据库与 MySQL、PPAS 的比较
为什么Oracle数据库迁移到MySQL家族难推?原因是Oracle数据库迁移到MySQL系列会增加ISV和企业迁移的风险。在整个迁移过程中,代码、存储过程和架构都需要做很大的改变,这会导致研发重新学习、DBA重新学习、代码重新学习。语法重写甚至业务架构重写最终会导致业务风险增加、人工成本增加、产品成本增加。
Oracle 数据库到云数据库 PPAS 版的推广相对容易,在推广过程中提高了 Oracle 迁移上云的成功率。研发可以持续编写Oracle语法,降低迁移难度和工作量,阿里云可以自动运维和提升DBA SQL优化能力,代码语法几乎不需要改动,ADAM辅助精准分析。
为什么 PPAS 与 Oralce 的兼容性更好?从上图可以看出,MySOL和Oracle的交集面积比PostgreSQL和Oracle的要小,没有达到预期的效果。预计云数据库PASS版的效果应该是Oracle的区域和PostgreSQL的区域几乎重叠。
为什么需要这么多兼容的部件?因为这样可以将企业的开发团队、原有的开发成果和已有的应用快速上云。比如开发者开发的软件全部离线,但是客户要求上云,上云需要使用互联网,那么就需要改变原有的存储方式。为了在线和离线维护云架构,需要改变结构,这将需要大量的人力成本。如果有直接兼容Oracle语法的功能,这个时候放到云端会减轻整体负担。
云数据库PPAS to Oracle兼容的数据类型有很多,如BLOB、CLOB、DATE等。他们每个人都有自己的别名和类型。例如,BLOB 的别名是 LONG RAW,它的类型是二进制数据。
ADAM 可以通过全量迁移和增量迁移的方式,协助用户将 Oracle 数据库迁移到云端。如果 Oracle 数据量很大,可能需要一周甚至一个月的时间才能完成传输。这时候可以通过高速连接和高速通道来增加带宽,不需要经过互联网,防止传输错误的数据,也不会影响生产库。通过ADAM平台,Oracle数据到云数据库还将提供30天退货机制,为用户迁移割接过程提供最大保障。
PPAS版不仅具有高可用,还支持同城容灾。用户可以选择使用单AZ集群或多AZ(同城容灾)集群,无需任何额外费用。有保障的企业级容灾需要保护。
PPAS版不仅提供自动备份,还提供50%的免费备份空间。例如,如果用户购买了 1TB 的实例存储空间,他们将直接获得 500GB 的免费备份空间。
ApsaraDB for PPAS 云管理是按时间点克隆实例。实例克隆功能将于2018年7月上线,支持最长730天的数据备份。目前,仅提供临时实例。
阿里云 PostgreSQL 生态系统
Oracle 应用可以迁移到 PPAS 版,它使用高性能本地存储来存储热的 OLTP 业务数据。历史信息存储在外部 OSS 上,OSS 上的数据可以直接被 HybridDB for PostgreSQL 读取和使用,也就是说 OLTP 可以进行业务处理,OLAP 可以直接使用阿里云数据仓库服务。开源Greenplum数据库分布式MPP架构。PostgreSQL 的混合数据库。
同时,用户也可以保留原有的Oracle系统,只使用HybridDB for PostgreSQL进行分析业务。OLAP 的性能优势如下:
HybridDB for PostgreSQL 混合分区
存储可以分为三种存储,即行存储、列存储和OSS温存储。三种存储方式描述如下:
原创链接