优化的解决方案:简单的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[&#39;location&#39;]:

if data[&#39;name&#39;] == address:

ID = data[&#39;id&#39;]

return ID

</p>

  获取到的数据是字符串类型的,我们通过将其转换为json格式来提取我们需要的位置。

  3.获取天气数据

  代码显示如下:

  def getData(address,ID,key):

url = f&#39;https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}&#39;

datas = requests.get(url).json()

data_updateTime = datas[&#39;updateTime&#39;]

data_time = datas[&#39;now&#39;][&#39;obsTime&#39;]

data_temp = datas[&#39;now&#39;][&#39;temp&#39;]

data_feelsLike = datas[&#39;now&#39;][&#39;feelsLike&#39;]

data_text = datas[&#39;now&#39;][&#39;text&#39;]

data_vis = datas[&#39;now&#39;][&#39;vis&#39;]

print(&#39;{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n&#39;.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 = &#39;北京&#39;

url = f&#39;https://geoapi.qweather.com/v2/city/lookup?location={address}&key={key}&#39;

<p>

datas = requests.get(url).json()

# print(data)

# print(type(datas))

for data in datas[&#39;location&#39;]:

if data[&#39;name&#39;] == address:

ID = data[&#39;id&#39;]

return ID

def getData(address,ID,key):

url = f&#39;https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}&#39;

datas = requests.get(url).json()

data_updateTime = datas[&#39;updateTime&#39;]

data_time = datas[&#39;now&#39;][&#39;obsTime&#39;]

data_temp = datas[&#39;now&#39;][&#39;temp&#39;]

data_feelsLike = datas[&#39;now&#39;][&#39;feelsLike&#39;]

data_text = datas[&#39;now&#39;][&#39;text&#39;]

data_vis = datas[&#39;now&#39;][&#39;vis&#39;]

print(&#39;{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n&#39;.format(address,data_updateTime,data_time,data_temp,data_feelsLike,data_text,data_vis))

if __name__ == &#39;__main__&#39;:

key = &#39;******&#39; //填入你自己的KEY值

address = input(&#39;请输入要查询的天气:&#39;)

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 &amp; 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级,特定场景下百亿条记录&lt;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温存储。三种存储方式描述如下:

  原创链接

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线