python 使用API調用和風天氣獲取天氣情況並保存


第一步、注冊
注冊免費API和閱讀技術文檔:

  注冊地址:https://console.heweather.com

注冊完成后,激活登錄后,新建應用 、新建key 
KEY名稱 密鑰ID 密鑰 類型
下載城市代碼,另存為 china-city-list.csv

 

 3-10天天氣預報

接口介紹
最長10天天氣預報數據,天氣預報包含的數據:日出日落、月升月落、最高最低溫度、天氣白天和夜間狀況、風力、風速、風向、相對濕度、大氣壓強、降水量、降水概率、露點溫度、紫外線強度、能見度等數據

城市覆蓋范圍:全球

大客戶可達14天,免費用戶獲得 3天預報數據,認證開發者可獲得7天預報,付費用戶可選 3-10天

請求URL
付費:https://api.heweather.net/s6/weather/forecast?parameters

免費:https://free-api.heweather.net/s6/weather/forecast?parameters
parameters代表請求參數,包括必選和可選參數。所有請求參數均使用&進行分隔,參數值存在中文或特殊字符的情況,需要對參數進行 url encode。

請求參數
參數 描述 選擇 示例值
location 需要查詢的城市或地區,可輸入以下值:
1. 城市ID:城市列表
2. 經緯度格式:經度,緯度(經度在前緯度在后,英文,分隔,十進制格式,北緯東經為正,南緯西經為負
3. 城市名稱,支持中英文和漢語拼音
4. 城市名稱,上級城市 或 省 或 國家,英文,分隔,此方式可以在重名的情況下只獲取想要的地區的天氣數據,例如 西安,陝西
5. IP
6. 根據請求自動判斷,根據用戶的請求獲取IP,通過 IP 定位並獲取城市數據 必選 1. location=CN101010100
2. location=116.40,39.9
3. location=北京、 location=北京市、 location=beijing
4. location=朝陽,北京、 location=chaoyang,beijing
5. location=60.194.130.1
6. location=auto_ip
lang 多語言,可以不使用該參數,默認為簡體中文
詳見多語言參數 可選 lang=en
unit 單位選擇,公制(m)或英制(i),默認為公制單位
詳見度量衡單位參數 可選 unit=i
key 用戶認證key,請參考如何獲取你的KEY
支持數字簽名方式進行認證,推薦使用 必選 key=xxxxxxxxxxxxxx

打開瀏覽器測試 OK
https://free-api.heweather.net/s6/weather/forecast?location=太原&key=XXXXXXXXXX

使用下面地址可以看到所有城市信息
https://cdn.heweather.com/china-city-list.txt

使用python調用

import requests
import time
import pandas as pd
url='https://cdn.heweather.com/china-city-list.txt'
strhtml = requests.get(url)
data = strhtml.text
data1 = data.split("\n")
for i in range(6): #因為前六行不需要,所以沒有打印
data1.remove(data1[0])
df_weather = pd.DataFrame(columns = ['city_name','area_name','date','tmp_max']) #創建一個空的dataframe
for item in data1:
# print(item[2:13])
url = 'https://free-api.heweather.net/s6/weather/forecast?location='+item[2:13]+'&key=HE1904250910131710'
strhtml = requests.get(url)
time.sleep(1)
dic = strhtml.json()
# print(dic)
city_name=dic["HeWeather6"][0]["basic"]["parent_city"]
area_name = dic["HeWeather6"][0]["basic"]["location"]
for item in dic["HeWeather6"][0]["daily_forecast"]:
# print(city_name,area_name,item["date"],"最高氣溫",item["tmp_max"])
add_data = pd.Series({'city_name':city_name,'area_name':area_name,'date':item["date"],"tmp_max":item["tmp_max"]})
# ignore_index=True不能少
df_weather = df_weather.append(add_data, ignore_index=True)
path="D:\\python\\excel_export\\"
df_weather.to_excel(path+"weather"+".xls")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM