Python獲取城市近30天日均AQI

數(shù)據(jù)來(lái)源:官方 中華人民共和國(guó)環(huán)境保護(hù)部
代碼:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 獲取國(guó)內(nèi)城市 30天內(nèi) 每天空氣質(zhì)量指數(shù)(AQI)
# 數(shù)據(jù)來(lái)源:中華人民共和國(guó)環(huán)境保護(hù)部
import requests
from bs4 import BeautifulSoup
import datetime

ref_url = 'http://datacenter.mep.gov.cn:8099/ths-report/report!list.action'
req_url = 'http://datacenter.mep.gov.cn:8099/ths-report/report!list.action'


def get_html_content(city='西安市', V_DATE='2017-03-01', E_DATE='2017-03-03'):
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Referer': ref_url,
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
    }
    data_dict = {
        'page.pageNo': '1',
        'xmlname': '1462259560614',
        'queryflag': 'close',
        'CITY': city,
        'isdesignpatterns': 'false',
        'V_DATE': V_DATE,
        'E_DATE': E_DATE,
    }
    r = requests.post(req_url, data=data_dict, headers=headers, timeout=60)
    return r.text


def date_format():
    dd = datetime.datetime.now()
    E_DATE = dd.strftime('%Y-%m-%d')
    _31DayAgo = (dd - datetime.timedelta(days=31))
    V_DATE = _31DayAgo.strftime('%Y-%m-%d')
    return (V_DATE, E_DATE)


def get_aqi_info(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    aqi_table = soup.find(id='GridView1')
    aqi_trs = aqi_table.find_all('tr')[1:]
    result = {}
    for aqi_tr in aqi_trs:
        aqi_tds = aqi_tr.find_all('td')
        aqi = aqi_tds[3].string
        dd = aqi_tds[6].string
        result[dd] = aqi
    return result


if __name__ == '__main__':
    city = input('請(qǐng)輸入城市名稱(chēng),如"西安市": ')
    (V, E) = date_format()
    content = get_html_content(city, V, E)
    result = get_aqi_info(content)
    print(city, '最近30天空氣質(zhì)量指數(shù)如下:\n')
    for key in sorted(result.keys()):
        print(key, '\t', result[key])

執(zhí)行結(jié)果如圖:


AQI數(shù)據(jù).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 假設(shè)要實(shí)現(xiàn)一個(gè)給客戶(hù)發(fā)送提示消息的功能,發(fā)送的消息類(lèi)型可分為:普通消息、加急消息、特加急消息等等,而每種消息的發(fā)送...
    西木柚子閱讀 966評(píng)論 0 12
  • 最近經(jīng)??吹揭痪湓?huà),叫“成人的世界只有利益,沒(méi)有對(duì)錯(cuò)”,盡管我不完全認(rèn)同這句話(huà),但是人成熟之后,不再一味糾結(jié)對(duì)錯(cuò)這...
    飛天豬0324閱讀 539評(píng)論 0 0
  • 姓名:謝新葵 公司:寧波大發(fā)化纖有限公司 寧波盛和塾《六項(xiàng)精進(jìn)》第235期學(xué)員感謝二組 【日精進(jìn)打卡第44天】 知...
    sandy201704閱讀 239評(píng)論 0 0
  • 【目錄】【上一章】【下一章】 什么叫做恐懼? 恐懼就是人對(duì)未來(lái)的無(wú)知! 這個(gè)無(wú)知,并不是說(shuō)人傻。而是對(duì)未來(lái)要發(fā)生的...
    半朽閱讀 442評(píng)論 1 14
  • 家訪(fǎng),說(shuō)到底是學(xué)校與家庭共同教育好孩子的一道不可或缺的橋梁。通過(guò)家訪(fǎng)能及時(shí)了解學(xué)生學(xué)習(xí)和生活的情況以及思想動(dòng)態(tài),讓...
    萍聚_ac1e閱讀 1,422評(píng)論 0 0

友情鏈接更多精彩內(nèi)容