高德地图API获取天气
1.建立行政区规划清单表
use edw; drop table if exists dim_prov_city_adcode; create table if not exists dim_prov_city_adcode (
prov_nm varchar(64),
city_nm varchar(64),
county_nm varchar(64),
prov_code varchar(64),
county_code varchar(64),
adcode varchar(64),
alias_nm varchar(64)
) ENGINE=InnoDB default CHARSET=utf8;
--alter table dim_prov_city_adcode add primary key(adcode);
alter table dim_prov_city_adcode COMMENT '行政区划清单表';
alter table dim_prov_city_adcode modify column prov_nm varchar(64) COMMENT '省份、直辖市名称';
alter table dim_prov_city_adcode modify column city_nm varchar(64) COMMENT '城市名称';
alter table dim_prov_city_adcode modify column county_nm varchar(64) COMMENT '区域名称';
alter table dim_prov_city_adcode modify column prov_code varchar(64) COMMENT '省GB码';
alter table dim_prov_city_adcode modify column county_code varchar(64) COMMENT '市GB码';
alter table dim_prov_city_adcode modify column adcode varchar(64) COMMENT '参考GB码(adcode)';
alter table dim_prov_city_adcode modify column alias_nm varchar(64) COMMENT '别名';
2.插入行政区规划清单表数据
3.建立天气数据表
create table if not exists fact_weather_adcode_day(
province varchar(64) comment '省份名',
city varchar(64) comment '城市名',
adcode varchar(64) comment '区域编码',
weather varchar(64) comment '天气现象(汉字描述)',
temperature float comment '实时气温',
winddirection varchar(64) comment '风向',
windpower varchar(64) comment '风力',
humidity varchar(64) comment '空气湿度',
reporttime varchar(64) comment '发布时间',
date_id varchar(64) comment '日期',
hour_id varchar(64) comment '小时'
)ENGINE=InnoDB default CHARSET=utf8;
alter table fact_weather_adcode_day add primary key(adcode,date_id,hour_id);
3.开发Python脚本调用API获取数据
#coding:utf8
#------------------------------------------------------
#Filename: getWeather.py
#Revision: 1.0
#Date: 2018/08/17
#Author: Jim
#Description:
#Notes: 通过调用高德API获取天气数据
#key: 6ca7b720f2ab2a48f749c1e19c3d1c47
#高德API相关文档: https://lbs.amap.com/api/
#获取天气: https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=<用户key>
# 如:https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=6ca7b720f2ab2a48f749c1e19c3d1c47
#------------------------------------------------------ import time, re, os, sys, time,urllib2,shutil,string
import json,datetime,MySQLdb
from dateutil.parser import parse #设置utf-8编码格式
reload(sys)
sys.setdefaultencoding( "utf-8" ) #获取当前日期的前n天
def getbeforeDay(n=0):
now_time = datetime.datetime.now()
beforeday = now_time - datetime.timedelta(n)
return beforeday.strftime("%Y%m%d") scriptDir = os.getcwd() if len(sys.argv) > 1 :
job_date_id = sys.argv[1]
else :
job_date_id = getbeforeDay(0) print "当前脚本路径:%s,当前参数日期:%s" % (scriptDir,job_date_id) #保存数据到文件文件
def saveContext(filename,*name):
format = '^'
dev_prd_flag = 'prd'
context = name[0]
for i in name[1:]:
context = context + format + str(i)
context = str(context).replace('(','(').replace(')',')').replace(',',',').replace(':',':')
if dev_prd_flag != 'prd':
print context
else:
#去除文件路径名首位空格
filename = filename.strip()
#读取目录名称
path = os.path.dirname(filename)
#如果目录不存在则创建目录
if not os.path.exists(path):
os.makedirs(path)
#读取文件名称,以追加的方式写文件
name = os.path.basename(filename)
fp = open(filename,'a')
fp.write(context+'\n')
fp.close() #获取网页文件
def getHtml(url,code='utf-8'):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER' }
request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request,data=None,timeout=60)
html = unicode(response.read(),str(code))
return html class ConMysql():
def __init__(self,host='192.168.122.140',user='shutong',passwd='shutong',db='edw'):
print "连接mysql数据库"
try:
conn= MySQLdb.connect(
host= host,
port = 3306,
user=user,
passwd=passwd,
db =db,
charset='utf8',
)
self.conn = conn
print "连接mysql成功"
except :
print "连接mysql失败" def execSQL(self,sql):
print "执行语句:%s" % (sql)
cur = self.conn.cursor()
cur.execute('set character_set_client = utf8')
cur.execute('set character_set_server = utf8')
cur.execute('set character_set_connection = utf8')
cur.execute('set character_set_results = utf8')
cur.execute('set collation_connection = utf8_general_ci')
cur.execute('set collation_server = utf8_general_ci')
result = cur.fetchmany(cur.execute(sql))
cur.close()
self.conn.commit()
return result '''析构方法'''
def __del__(self):
if self.conn:
self.conn.close()
else:
pass adcode = "" key = "6ca7b720f2ab2a48f749c1e19c3d1c47" def crawl_weather(adcode):
url = "https://restapi.amap.com/v3/weather/weatherInfo?city=%s&key=%s" % (adcode,key)
html = getHtml(url)
jsondata = json.loads(html) #省份
province = jsondata['lives'][0]['province'] #市
city = jsondata['lives'][0]['province'] #区域编码
adcode = jsondata['lives'][0]['adcode'] #天气现象
weather = jsondata['lives'][0]['weather'] #实时气温 摄氏度
temperature = jsondata['lives'][0]['temperature'] #风向
winddirection = jsondata['lives'][0]['winddirection'] #风力
windpower = jsondata['lives'][0]['windpower'] #空气湿度
humidity = jsondata['lives'][0]['humidity'] #数据发布时间
reporttime = jsondata['lives'][0]['reporttime'] #日期
date_id = parse(reporttime).strftime('%Y%m%d') #小时
hour_id = parse(reporttime).strftime('%H') print province,city,adcode,weather,temperature,winddirection,windpower,humidity,reporttime,date_id,hour_id sql = "insert ignore into fact_weather_adcode_day values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');" % (province,city,adcode,weather,temperature,winddirection,windpower,humidity,reporttime,date_id,hour_id) print sql
conn.execSQL(sql) conn = ConMysql()
crawl_weather(adcode)
高德地图API获取天气的更多相关文章
- 微信小程序-基于高德地图API实现天气组件(动态效果)
微信小程序-基于高德地图API实现天气组件(动态效果) 在社区翻腾了许久,没有找到合适的天气插件.迫不得已,只好借鉴互联网上的web项目,手动迁移到小程序中使用.现在分享到互联网社区中,帮助后续有 ...
- 解析高德地图api获取省市区,生成最新三级联动sql表
前言: 最近项目中用到了全国省市区三级信息,但是网上找到的信息都是比较旧的信息.与现在最新的地区信息匹配不上.后来想到高德地图上可能有这些信息.所以解析了一下api接口,生成了相关省市区的sql信息. ...
- js调用高德地图API获取地理信息进行定位
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=(需要自 ...
- 手机端获取用户详细地理位置(高德地图API)
项目开发需要获取用户详细的地理位置信息,使用了高德地图API接口 1,注册高德地图开发者账号获取开发者Key 2,页面调用 <script type="text/javascript& ...
- 【高德地图API】从零开始学高德JS API(七)——定位方式大揭秘
原文:[高德地图API]从零开始学高德JS API(七)——定位方式大揭秘 摘要:关于定位,分为GPS定位和网络定位2种.GPS定位,精度较高,可达到10米,但室内不可用,且超级费电.网络定位,分为w ...
- 安卓---高德地图API应用
说明:定位需要导入android_location 的jar包,如果没有会报错,这个官方网站好像找不到,这是我在网上找到的一个链接 http://download.csdn.net/detail/ra ...
- 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...
- 高德地图API应用
高德地图官网:http://api.amap.com/javascript/ 输入关键字,搜索地址功能的网页: 1.引用远程Map Api(js)网址形式(注册后获取) 2.定义个<div> ...
- 使用高德地图SDK获取定位信息
使用高德地图SDK获取定位信息 第一步: 在高德官网下载SDK,如我这里需要获取定位信息,故仅下载"定位功能" 第二步: 注册成为开发者,并创建应用获取相应的key.其中,在使用A ...
随机推荐
- Ajax工作原理和原生JS的ajax封装
前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...
- Qt5.11参考文档
Qt5.11参考文档: http://www.bim-times.com/qt/Qt-5.11.1/qtdoc/index.html (来源于Qt官网)
- 381. Insert Delete GetRandom O(1) - Duplicates allowed允许重复的设计1数据结构
[抄题]: Design a data structure that supports all following operations in average O(1) time. Note: Dup ...
- Docker学习记录常用命令
1. docker ps -a 查看运行中的容器 2. docker images 查看docker镜像 3. docker rm id(容器id) 删除容器(容器id可以通过docker ps查 ...
- 面向对象JS基础
什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下 ...
- ui界面使用 DialogMonitorOPS 问题
-- 是类主要是实现对界面上元素的处理.实现效果的处理 struct gt_cl_hp_uiName ( fn help = ( gt_10000_help = " 类主要是实现对界面上元素 ...
- [GO]匿名函数和defer
package main import "fmt" func main() { a := 10 b := 20 defer func() { fmt.Printf("a ...
- C++11新特性之auto
auto的使用 c++11引入了auto类型说明符,auto让编译器通过初始值来推算变量的类型,所以auto定义的变量必须有初始值. 使用auto也能在一条语句中声明多个变量,因为一条声明语句只能 ...
- 编写高质量代码改善C#程序的157个建议——建议122:以<Company>.<Component>为命名空间命名
建议122:以<Company>.<Component>为命名空间命名 建议以<Company>.<Component>为程序集命名,比如Microso ...
- 编写高质量代码改善C#程序的157个建议——建议113:声明变量前考虑最大值
建议113:声明变量前考虑最大值 假设正在开发一个工资系统,其中一个模块负责处理加薪.代码如下: static void Main(string[] args) { ; salary = (); Co ...