① 有哪些免費開放且收錄城市較完整的天氣 API 介面
一 天氣預報
國內的天氣預報數據,主要是國家氣象局和國外兩個來源(指數據來源)。
國外方面主要是雅虎(XML格式,谷歌已經停掉了自家的天氣API);
國內數據由國家氣象局提供(JSON格式)。
在知乎看到過一篇專業人士評論,雅虎可以提供全球范圍的且非常精細的天氣數據(小時級更新),但主要是通過計算機自動生成。而國家氣象局則是各地經驗豐富的專家人士結合計算機綜合分析得出,在准確性上更勝一籌。我就這樣信了!
國家氣象局介面資源及用法
氣象局的天氣預報主頁:移動版普通版 ,仔細挖掘這兩個地址可以發現很多好東西哦。
特點:介面多,來自http://weather.com.cn和http://mobile.weather.com.cn都有,次數不限制,服務穩定,功能全面,優先推薦。
1. 實時天氣介面
有多個介面,好像差別不大:
實時天氣1:http://www.weather.com.cn/data/sk/101190408.html
實時天氣2:http://www.weather.com.cn/data/cityinfo/101190408.html
實時天氣3(帶時間戳):http://mobile.weather.com.cn/data/sk/101010100.html?_=1381891661455
2. 一周天氣預報介面
7天預報數據 URL: http://mobile.weather.com.cn/data/forecast/101010100.html?_=1381891660081
該介面來源氣象局移動版網站,目測數據最為精確,詳細介面格式如下:
{"c":{"c1":"101010100","c2":"beijing","c3":"北京","c4":"beijing","c5":"北京","c6":"beijing","c7":"北京","c8":"china","c9":"中國","c10":"1","c11":"010","c12":"100000","c13":"116.391","c14":"39.904","c15":"33","c16":"AZ9010","c17":"+8"},
"f":{"f1":
[
{"fa":"01","fb":"03","fc":"10","fd":"5","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:21|17:40"},
{"fa":"07","fb":"07","fc":"19","fd":"12","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:22|17:38"},
{"fa":"02","fb":"00","fc":"15","fd":"5","fe":"8","ff":"8","fg":"3","fh":"1","fi":"06:23|17:37"},
{"fa":"00","fb":"00","fc":"16","fd":"4","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:24|17:35"},
{"fa":"00","fb":"00","fc":"18","fd":"7","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:25|17:34"},
{"fa":"00","fb":"01","fc":"18","fd":"8","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:26|17:32"},
{"fa":"01","fb":"01","fc":"16","fd":"6","fe":"0","ff":"0","fg":"0","fh":"0","fi":"06:27|17:31"}],
"f0":"201310121100"}}
詳細介面分析如下:
//格式說明
var format={fa:圖片1,fb:圖片2,fc:溫度1,fd:溫度2,fe:風向1,ff:風向2,fg:風力1,fh:風力2,fi:日出日落};
//定義天氣類型
var weatherArr={"00":"晴","01":"多雲","02":"陰","03":"陣雨","04":"雷陣雨","05":"雷陣雨伴有冰雹","06":"雨夾雪","07":"小雨","08":"中雨","09":"大雨","10":"暴雨","11":"大暴雨","12":"特大暴雨","13":"陣雪","14":"小雪","15":"中雪","16":"大雪","17":"暴雪","18":"霧","19":"凍雨","20":"沙塵暴","21":"小到中雨","22":"中到大雨","23":"大到暴雨","24":"暴雨到大暴雨","25":"大暴雨到特大暴雨","26":"小到中雪","27":"中到大雪","28":"大到暴雪","29":"浮塵","30":"揚沙","31":"強沙塵暴","53":"霾","99":""};
//定義風向數組
var fxArr={"0":"無持續風向","1":"東北風","2":"東風","3":"東南風","4":"南風","5":"西南風","6":"西風","7":"西北風","8":"北風","9":"旋轉風"};
//定義風力數組
var flArr={"0":"微風","1":"3-4級","2":"4-5級","3":"5-6級","4":"6-7級","5":"7-8級","6":"8-9級","7":"9-10級","8":"10-11級","9":"11-12級"};
6天預報數據 URL: http://m.weather.com.cn/data/101190408.html
該介面來源網路,應該是一個流傳比較久的介面,大發現准確性和穩定性可能不穩定。介面分析如下:
{"weatherinfo":{
#基本信息
"city":"北京","city_en":"beijing","date_y":"2013年9月24日","date":"","week":"星期二","fchh":"11","cityid":"101010100",
#6天溫度范圍
"temp1":"22℃~11℃","temp2":"25℃~11℃","temp3":"26℃~13℃","temp4":"25℃~15℃","temp5":"25℃~16℃","temp6":"24℃~16℃",
#6天溫度范圍(華氏)
"tempF1":"71.6℉~51.8℉","tempF2":"77℉~51.8℉","tempF3":"78.8℉~55.4℉","tempF4":"77℉~59℉","tempF5":"77℉~60.8℉","tempF6":"75.2℉~60.8℉",
#6天天氣
"weather1":"多雲轉晴","weather2":"晴","weather3":"晴","weather4":"晴轉多雲","weather5":"陰轉陣雨","weather6":"多雲",
#6天天氣圖示(每天2張)
"img1":"1","img2":"0","img3":"0","img4":"99","img5":"0","img6":"99","img7":"0","img8":"1","img9":"2","img10":"3","img11":"1","img12":"99",
"img_single":"1",
#6天天氣圖示文字(每天2)
"img_title1":"多","img_title2":"晴","img_title3":"晴","img_title4":"晴","img_title5":"晴","img_title6":"晴","img_title7":"晴","img_title8":"多雲","img_title9":"陰","img_title10":"陣雨","img_title11":"多雲","img_title12":"多雲",
"img_title_single":"多雲",
#6天風
"wind1":"北風3-4級轉微風","wind2":"微風","wind3":"微風","wind4":"微風","wind5":"微風","wind6":"微風",
"fx1":"北風","fx2":"微風",
#6天風力情況
"fl1":"3-4級轉小於3級","fl2":"小於3級","fl3":"小於3級","fl4":"小於3級","fl5":"小於3級","fl6":"小於3級",
#24小時內
"index":"較冷","index_d":"建議著大衣、呢外套加毛衣、衛衣等服裝。體弱者宜著厚外套、厚毛衣。因晝夜溫差較大,注意增減衣服。",
#48小時內
"index48":"較舒適","index48_d":"建議著薄外套或牛仔衫褲等服裝。年老體弱者宜著夾克衫、薄毛衣等。晝夜溫差較大,注意適當增減衣服。",
#紫外 洗車 旅遊 舒適指數 晨練 晾曬 過敏
"index_uv":"弱",
"index48_uv":"強",
"index_xc":"適宜",
"index_tr":"適宜",
"index_co":"舒",
"st1":"21","st2":"12","st3":"24","st4":"12","st5":"25","st6":"14", #不明
"index_cl":"較適宜",
"index_ls":"適宜",
"index_ag":"極易發"
}}
② 如何使用python利用api獲取天氣預報
這個和用不用python沒啥關系,是數據來源的問題。調用淘寶API,使用 api相關介面獲得你想要的內容,我 記得api中有相關的介面,你可以看一下介面的說明。用python做爬蟲來進行頁面數據的獲取。希望能幫到你。
③ 求助:用python獲取天氣預報
# 獲取溫度、濕度、風力等
WEATHER_URL_A = "http://www.weather.com.cn/data/sk/%s.html"
# 獲取天氣狀況、最大/小溫度等
WEATHER_URL_B = "http://www.weather.com.cn/data/cityinfo/%s.html"
# 獲取未來7天天氣數據
WEATHER_URL_C = "http://www.weather.com.cn/weather/%s.shtml"
URL里%s指城市對應的代碼。詳細參考:
http://www.cnblogs.com/toosuo/p/3868004.html
不過這篇文章里有的介面已經不能用了。
上面我給的三個URL里,前兩個直接返回json格式數據;第三個返回是一個頁面,需要自己從頁面里提取想要的信息。
④ Python獲取本土的天氣和任意城市的天氣怎麼解決
返回的數據是經過gzip壓縮的,如果你用urllib,需要先把獲取的二進制數據解壓,再解碼成字元串,包括編碼都幫你自動解決,不需要自己操心。
⑤ 幫我做一個代碼成為.py文件,用來python抓取空氣質量歷史數據
前幾天在通過丫丫的介面截取的天氣數據,你可以參考一下。
我就是隨便寫著玩的。
⑥ 天氣預報API介面是什麼
天氣預報API介面是氣象服務商為客戶提供服務的唯一介面。拿墨跡赤必為例,跟客戶充分溝通後了解客戶的實際需求,從而對現有的數據進行調整,符合客戶的需求形成API介面,讓客戶接入,這樣就形成了一個完整的服務。所以說API介面並不是一個很神秘的東西,只不過是企業和客戶之間的一條服務紐帶。
⑦ 如何得到天氣情況在那個介面獲取
據我所知,氣象局提供三個天氣查詢介面,如下:
1、實時天氣介面
地址:http://www.weather.com.cn/data/ sk/【城市代碼】.html
例如:查詢北京實時天氣:
http://www.weather.com.cn/data/sk/101010100.html
結果:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"13","WD":"南風","WS":"2","SD":"59%","WSE":"2","time":"10:30","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}
2、今日天氣介面
地址:http://www.weather.com.cn/data/cityinfo/【城市代碼】.html
例如:查詢北京今日天氣:
http://www.weather.com.cn/data/cityinfo/101010100.html
結果:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"15","temp2":"5℃","weather":"陣雨轉陰","img1":"d3.gif","img2":"n2.gif","ptime":"08:00"}}
3、今日及未來天氣介面【內容最詳細】
地址:http://m.weather.com.cn/data/【城市代碼】.html
例如:查詢北京今日及未來天氣:
http://m.weather.com.cn/data/101010100.html
結果:
{"weatherinfo":{"city":"北京","city_en":"beijing","date_y":"2013年10月22日","date":"",
"week":"星期二","fchh":"08","cityid":"101010100","temp1":"15℃~5℃","temp2":"15℃~4℃……
…【省略】"index_tr":"適宜","index_co":"較舒適",
"st1":"11","st2":"1","st3":"13","st4":"5","st5":"14","st6":"4","index_cl":"較不宜",
"index_ls":"不太適宜","index_ag":"不易發"}}
參考:
http://www.haodaima.net/art/2322340
⑧ python怎麼自動抓取網頁上每日天氣預報
使用到了urllib庫和bs4。bs4提供了專門針對html的解析功能,比用RE方便許多。
# coding : UTF-8import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )from bs4 import BeautifulSoupimport csvimport urllibdef get_html(url):
html = urllib.urlopen(url) return html.read()def get_data(html_text):
final = []
bs = BeautifulSoup(html_text, "html.parser")
body = bs.body
data = body.find('div', {'id': '7d'})
ul = data.find('ul')
li = ul.find_all('li') for day in li:
temp = []
date = day.find('h1').string
temp.append(date)
inf = day.find_all('p')
temp.append(inf[0].string,) if inf[1].find('span') is None:
temperature_highest = None
else:
temperature_highest = inf[1].find('span').string
temperature_highest = temperature_highest.replace('C', '')
temperature_lowest = inf[1].find('i').string
temperature_lowest = temperature_lowest.replace('C', '')
temp.append(temperature_highest)
temp.append(temperature_lowest)
final.append(temp) return finaldef write_data(data, name):
file_name = name with open(file_name, 'a') as f:
f_csv = csv.writer(f)
f_csv.writerows(data)if __name__ == '__main__':
html_doc = get_html('http://www.weather.com.cn/weather/101190401.shtml')
result = get_data(html_doc)
write_data(result, 'weather.csv') print
運行結果保存在csv文件中