Advertisement

编写一个用于获取全国空气质量监测网代码的Python脚本。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
该方案旨在收集特定城市历年每日的空气质量数据。首先,从某城市的空气质量监测网站获取该市每个月的链接,然后对每个月的数据进行提取。例如,连云港市的数据位于:https://www.aqistudy.cn/historydata/daydata.php?city=连云港连云港2014年5月的空气质量数据也位于:https://www.aqistudy.cn/historydata/daydata.php?city=连云港&month=2014-05。在尝试获取这些数据时,发现网页中的表格信息被隐藏起来。最初尝试使用requests库进行抓取,但未能成功获取到这些隐藏的数据。 进一步分析后,判断该网站可能采用了动态加载网页的技术。因此,进行了以下诊断和处理: 1. 通过分析XHR请求和JavaScript代码,追踪隐藏数据的加载过程,但未能找到相应的加载机制。 2. 利用PhantomJS的`get()`方法和`pd.read_html`函数来获取隐藏的表格数据,然而这种方法并不稳定,仅偶尔能够成功加载表格数据,无法实现大规模的数据采集。 为了解决这个问题,查阅相关资料得知该网站的表格数据存储在Console窗口中的“items”列表中。因此,使用Selenium的webdriver.firefox()配合driver.execute_script(return items)来访问并提取这些数据是可行的。然而,在使用过程中仍然存在一些问题: 1. 单次爬取一个网页可能获得数据,但连续爬取多个网页时会遇到错误:首先出现“ReferenceError: items is not defined”的错误;其次是“connection refused”错误。 2. 针对“connection refused”错误的处理方法是关闭多余的浏览器实例(使用driver.quit());如果执行`execute_script`仍然报错, 可以尝试使用`pd.read_html`获取信息。 3. 在之前使用PhantomJS获取数据时, 曾出现输出空表格的情况, 这可能是由于加载速度不足造成的;因此, 采用Waite机制等待表格元素出现后再抓取页面元素(例如: `wait.until(EC.element_to_be_clickable((By.XPATH,/html/body/div[3]/div[1]/div[1]/table/tbody)))`)来确保数据的完整性。 4. 此外, 偶尔还会出现输出为空的情况, 因此采用循环方式处理, 如果当前抓取的表格为空, 则重新抓取页面元素; 具体实现为:如果 `len(result) > 1`, 则将数据保存到Excel文件中(filename = str(month) + .xls),并将结果保存到指定路径下 (E:\python\案例程序\data\\)。如果 `len(result) <= 1`, 则关闭浏览器实例并递归调用`getdata(monthhref, month)`函数继续爬取下一页数据。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 数据工具
    优质
    本工具旨在提供便捷途径访问全国空气质量监测数据,涵盖PM2.5、二氧化硫等关键指标,助力用户实时了解并改善生活环境中空气状况。 从中国环境监测总站每小时发布的空气质量监测数据网上自动获取的数据包括600多个监测点和120个城市。
  • 数据爬.py
    优质
    本Python脚本用于爬取和解析全国空气质量监测网的数据,帮助用户获取实时空气质量信息,便于研究与个人健康管理。 爬取空气质量检测网的部分城市的历年每天质量数据思路是从某城市的空气质量网页获取某市每月的链接,再爬取每个月的表格数据。 遇到的问题是通过requests无法直接获取到隐藏在页面中的表格数据,判断可能是由于这些数据是由动态加载完成的。 尝试解决的方法包括: 1. 试图通过XHR、js查找隐藏的数据加载网页但没有成功。 2. 使用phantomjs.get()和pd.read_html虽能偶尔获得所需的表格数据,但由于不稳定而无法大规模使用。 最终找到解决方案是利用selenium的webdriver.firefox(), 并执行driver.execute_script(return items) 来获取Console里的items中的表格数据。但是这种方法也遇到了一些问题: 1. 在爬取一个网页成功后连续进行时会出现两个错误:Message: ReferenceError: items is not defined 和 connection refused。 2. 对于connection refused的问题,可以通过关闭当前的driver.quit()来解决;对于execute_script 出错的情况,则可以尝试使用pd.read_html获取信息。 此外,在用phantomjs获取数据时常会输出空表格。这可能是由于加载时间不足导致的,因此需要等待到table元素出现后再进行网页抓取操作。 Element=wait.until(EC.element_to_be_clickable((By.XPATH,/html/body/div[3]/div[1]/div[1]/table/tbody))) 如果获取的数据为空,则重新执行获取数据的操作。当成功获取表格后,将其保存为.xls格式文件,并打印出成功的消息。 这段文字描述了爬取空气质量检测网的历史数据过程中遇到的技术挑战和解决方案,强调了动态加载内容的处理、使用selenium进行网页操作的重要性以及如何解决连续抓取时出现的问题。
  • 数据集
    优质
    该数据集包含了全国范围内各个监测站点的空气质量实时监测信息,包括PM2.5、二氧化硫等关键污染物浓度,旨在为公众健康和环境保护提供科学依据。 该数据集包含197个CSV文件,每个文件对应一个城市的监测数据。数据集中包括以下几项信息:日期、质量等级(通常使用颜色表示空气质量状况)、AQI指数(综合指标用于描述空气质量的整体状况)、当天AQI名(如优、良等),以及各种污染物浓度的数据,例如PM2.5、PM10、二氧化硫(SO2)、二氧化氮(NO2)、一氧化碳(CO)和臭氧(O3)。 除了原始数据外,该数据集还经过了数据清洗和预处理的过程。在这一过程中,可能对缺失值和异常值进行了适当的处理,以确保数据的完整性和准确性。这个数据集对于研究全国各城市的空气质量状况非常有价值。通过对这些数据进行分析,可以揭示不同城市在不同时段内的空气质量变化趋势、污染物浓度差异以及潜在污染源等信息。
  • 站点坐标.docx
    优质
    该文档包含了全国各地空气质量监测站点的位置信息和坐标数据,旨在为环境研究、数据分析及公众查询提供准确详实的基础资料。 国家空气质量监测站的坐标数据包含了各个监测站点的位置信息,这些数据对于研究空气质量和环境状况非常有用。
  • -源
    优质
    本项目提供一套完整的空气质量监测系统源代码,涵盖数据采集、处理及分析功能,适用于环保科研与实践应用。 在Air-quality-monitoring项目中,我们主要关注使用JavaScript技术实现一个空气质量监测系统。该系统能够从服务器获取数据,并通过WebSockets进行实时通信。此外,项目还利用了Jquery库来解析和处理这些数据,并根据空气质量指数(AQI)的条件动态渲染页面。 1. **WebSockets**:这是一种客户端与服务器之间建立长连接的协议,允许双方双向通信。在本项目中,通过WebSockets实时接收来自服务器端的数据更新,确保用户能即时查看到最新信息而无需频繁发起HTTP请求。 2. **JavaScript**:作为网页开发的主要脚本语言,负责控制页面动态行为。在这个空气质量监测系统里,JavaScript用于编写与服务器交互的逻辑、处理接收到的数据,并在页面上展示出来。 3. **Jquery**:这是一个轻量级的库,简化了DOM操作、事件处理和动画制作等任务。在此项目中,使用它来解析从服务器传来的JSON数据并将其转换为JavaScript对象,然后根据需要更新HTML元素以显示这些数据。 4. **空气质量指数(AQI)条件渲染**:通过不同的数值范围反映空气污染程度的指标。当系统接收到新的AQI数据时,会依据预设的标准来改变页面内容的表现形式,如使用不同颜色、图标或提示信息让用户直观了解当前空气质量状况。 5. **数据解析与处理**:从服务器传输过来的数据通常以JSON格式存在。Jquery提供了便捷的方法将这些字符串转换成JavaScript对象,并通过遍历和操作它们的方式把数据显示在HTML元素中实现可视化效果。 6. **事件监听与响应**:为了实时更新页面上的空气质量信息,项目可能使用了如`$.ajax()`或`$.getJSON()`等方法定期向服务器请求数据,或者利用WebSockets的机制立即对新接收的数据作出反应并刷新界面内容。 7. **前端模板引擎(可选)**:虽然没有明确提及,但为了更高效地渲染和更新页面,项目可能还使用了如Handlebars或EJS等前端模板引擎,在不直接操作DOM的情况下根据数据生成HTML片段。 综上所述,“Air-quality-monitoring”结合了WebSockets的实时通信能力、JavaScript与Jquery的强大功能以及AQI条件下的动态显示,提供了一个直观展示空气质量信息的应用程序。该应用不仅帮助用户了解周围环境状况,也为开发者提供了学习和实践相关技术的一个实例。
  • Python某城市各历史数据
    优质
    本项目旨在通过Python编程语言,自动抓取并分析特定城市的空气质量历史数据。用户可选择不同监测站的数据,便于研究和环保应用开发。 使用Python爬取某城市各监测站点的历史空气质量数据。
  • 站点经纬度信息
    优质
    本数据集包含全国范围内各空气质量监测站点的位置信息,具体包括每个站点的精确经纬度坐标。这些信息有助于研究者和公众追踪和分析各地空气质素状况及其变化趋势。 全国共有1497个空气检测站点的经纬度数据可用于分析各地空气质量及污染情况。
  • Python CNEMC 实时数据
    优质
    本项目利用Python编写脚本,从中国国家生态环境部网站实时抓取并解析空气质量监测数据,为环境研究和公众健康提供参考。 从中国环境总站采集实时空气质量数据需要注意以下几点:监测点位的1小时浓度平均值是指该点位在1小时内所测项目的算术平均值或测量值,例如16时的小时均值为15:00至16:00之间的算术平均值或测量值。8小时滑动平均值则是指当前时间前8个小时内所测项目浓度的算术平均值。 发布的数据通常每小时更新一次,但由于数据传输需要一定的时间,所以发布的数据会有大约半小时的延迟。例如,15时的实际监测数据会在约15:30左右公布。
  • Python城市PM2.5和臭氧等数据详解
    优质
    本教程深入讲解如何利用Python代码获取中国各城市的PM2.5、臭氧及其他重要空气质量指标的数据,并进行数据分析。适合环境监测与研究者参考学习。 随着国家发展,许多城市的空气质量并不理想。虽然国家气象局会实时统计这些数据,但直接爬取可能会遇到反爬虫措施的挑战,因此使用现成的免费接口是较为便捷的选择之一。下面提供一个利用Python调用API查询空气质量指数的例子: ```python # -*- coding: utf-8 -*- # flake8: noqa __author__ = wukong import urllib from urllib import urlencode # 配置您申请的应用密钥和用户标识符(例如:app_key、open_id) app_key = *** open_id = *** request_url = http://api.example.com/air_quality # 示例API地址,实际使用时需替换为真实接口 params = { key: app_key, id: open_id, } data_encode = urlencode(params) url_with_params = request_url + ? + data_encode response = urllib.urlopen(url_with_params).read() print(response.decode(utf-8)) ``` 注意:上述代码中的`app_key`和`open_id`需要根据实际情况替换,而URL部分则应使用真实的API接口地址。
  • Python城市PM2.5和臭氧等数据详解
    优质
    本教程详细讲解如何使用Python编程语言从官方API获取中国各城市的PM2.5、臭氧及其他关键空气质量指标的数据。 本段落主要介绍了如何使用Python获取全国各城市PM2.5、臭氧等空气质量数据的过程解析,并通过示例代码进行了详细的讲解。内容对学习或工作中需要此类数据的人具有一定的参考价值,有需求的朋友可以参考这篇文章。