Python获取城市近30天日均AQI

数据来源:官方 中华人民共和国环境保护部
代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取国内城市 30天内 每天空气质量指数(AQI)
# 数据来源:中华人民共和国环境保护部
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('请输入城市名称,如"西安市": ')
    (V, E) = date_format()
    content = get_html_content(city, V, E)
    result = get_aqi_info(content)
    print(city, '最近30天空气质量指数如下:\n')
    for key in sorted(result.keys()):
        print(key, '\t', result[key])

执行结果如图:


AQI数据.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 假设要实现一个给客户发送提示消息的功能,发送的消息类型可分为:普通消息、加急消息、特加急消息等等,而每种消息的发送...
    西木柚子阅读 962评论 0 12
  • 最近经常看到一句话,叫“成人的世界只有利益,没有对错”,尽管我不完全认同这句话,但是人成熟之后,不再一味纠结对错这...
    飞天猪0324阅读 522评论 0 0
  • 姓名:谢新葵 公司:宁波大发化纤有限公司 宁波盛和塾《六项精进》第235期学员感谢二组 【日精进打卡第44天】 知...
    sandy201704阅读 236评论 0 0
  • 【目录】【上一章】【下一章】 什么叫做恐惧? 恐惧就是人对未来的无知! 这个无知,并不是说人傻。而是对未来要发生的...
    半朽阅读 442评论 1 14
  • 家访,说到底是学校与家庭共同教育好孩子的一道不可或缺的桥梁。通过家访能及时了解学生学习和生活的情况以及思想动态,让...
    萍聚_ac1e阅读 1,418评论 0 0

友情链接更多精彩内容