用API爬取天氣預報數據


1.注冊免費API和閱讀技術文檔:

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

  文檔地址:https://www.heweather.com/documents/api-url

在文檔中可以看到很多參數

返回的是json數據

 

2.獲取API數據:

獲取城市列表:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:XXC
import requests
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])
for item in data1:
    print(item[2:13])

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:XXC
import requests
import time
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])
for item in data1:
    # print(item[2:13])
    url = 'https://free-api.heweather.com/v5/forecast?city='+item[2:13]+'&key=7d0daf2a85f64736a42261161cd3060b'
    strhtml = requests.get(url)
    time.sleep(1)
    print(strhtml.text)

獲取當天溫度的最大值:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:XXC
import requests
import time
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])
for item in data1:
    # print(item[2:13])
    url = 'https://free-api.heweather.com/v5/forecast?city='+item[2:13]+'&key=7d0daf2a85f64736a42261161cd3060b'
    strhtml = requests.get(url)
    time.sleep(1)
    dic = strhtml.json()
    for item in dic["HeWeather5"][0]["daily_forecast"]:
        print(item["tmp"]["max"])

 

往mysql數據庫中存入id,city,cnty三個字段數據:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:XXC
import json
import pymysql
import requests
import time

def prem(db):
    cursor = db.cursor()
    cursor.execute("SELECT VERSION()")
    data = cursor.fetchone()
    print("Database version : %s " % data)  # 結果表明已經連接成功
    cursor.execute("DROP TABLE IF EXISTS weatherInfo")  # 如果存在表就刪除原表
    sql = """CREATE TABLE weatherInfo (
             id varchar(20),
             city varchar(20),
             cnty varchar(20))"""
    cursor.execute(sql)  # 根據需要創建一個表格

def reviewdata_insert(db):
    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])
    for item in data1:
        # print(item[2:13])
        url = 'https://free-api.heweather.com/v5/forecast?city=' + item[2:13] + '&key=7d0daf2a85f64736a42261161cd3060b'
        strhtml = requests.get(url)
        time.sleep(1)
        dic = strhtml.json()
        id = dic["HeWeather5"][0]["basic"]["id"]
        city = dic["HeWeather5"][0]["basic"]["city"]
        cnty = dic["HeWeather5"][0]["basic"]["cnty"]
        result=[]
        result.append((id,city,cnty))
        insert_we = "insert into weatherInfo(id,city,cnty) values (%s,%s,%s)"
        cursor = db.cursor()
        cursor.executemany(insert_we, result)
        db.commit()

if __name__ == "__main__":  # 起到一個初始化或者調用函數的作用
    db = pymysql.connect("localhost", "root", "123456", "test", charset='utf8')
    cursor = db.cursor()
    prem(db)
    reviewdata_insert(db)
    cursor.close()

執行結果:

 


免責聲明!

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



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