美文网首页
实时抓取空气质量数据

实时抓取空气质量数据

作者: 家琦的三亩地 | 来源:发表于2016-11-04 16:12 被阅读0次

利用如下网址来获取某个城市的空气质量

http://pm25.in/

人家本来是提供了API的,而且也有公共Token可以让人测试,但是我觉得调人家接口有点不好意思,反正我只要数据,也就不占用人家的服务了(哈哈,就是把爬虫说的这么清新脱俗),真的,你看我最后的time.sleep(1*60)就知道我真的不是那种恶意把人家服务器搞趴的坏人。
代码如下

# -*- coding: utf-8 -*-
from lxml import etree
import requests
import sys
import json
import datetime
import hashlib
import time

# 指定默认编码方式为utf-8
reload(sys)
sys.setdefaultencoding('utf-8')


# 从网站获取空气状况
def get_pm(city='hangzhou'):  # 输入参数为城市全拼
    url = 'http://pm25.in/' + city
    response = requests.get(url)  # 获取指定网址的html
    html = etree.HTML(response.text)
    table_result = html.xpath('//table[@id="detail-data"]')  # 获取数据表
    table = table_result[0]
    head_results = table.xpath('thead/tr/th')  # 获取表头
    records = table.xpath('tbody/tr')  # 获取记录
    air_record = {}  # 定义字典
    air_records = []  # 定义列表
    for record in records:  # 遍历记录
        for i in range(0, len(head_results)):  # 遍历字段
            air_record[head_results[i].text] = record.xpath('td')[i].text
        air_records.append(air_record)
        air_record = {}  # 清空变量的缓存
    return air_records


# 加时间戳输出文件
def file_output(text, target_dir=''):
    current_time = datetime.datetime.now()
    file_name = current_time.strftime('%Y%m%d%H%M') + '.json'
    output_file = open(target_dir + file_name, 'w')
    output_file.write(text)
    output_file.close()


# 校验是否更新
def is_update(current, original=''):
    md5_of_original = hashlib.md5(original).hexdigest()
    md5_of_current = hashlib.md5(current).hexdigest()
    if md5_of_current == md5_of_original:
        return False
    else:
        return True

# 定时任务
original_records_json = ''  # 对比原数据初始化
while True:
    current_records = get_pm()  # 获取数据
    current_records_json = json.dumps(current_records, ensure_ascii=False, indent=2)  # 转化为JSON格式
    if is_update(current_records_json, original_records_json):
        # file_output(current_records_json)
        print datetime.datetime.now().strftime('%Y%m%d%H%M')  # 时间戳
        print current_records_json  # 数据输出
        original_records_json = current_records_json  # 对比数据更新
    else:
        print datetime.datetime.now().strftime('%Y%m%d%H%M')
        print u'数据尚未更新'
    time.sleep(1*60)

最后还是非常感谢BestApp工作室的PM25.in这个作品,因为我根本没办法在其他网站找到这么方便的数据获取方式,其实根本原因就是国家环境保护部的网站太乱,(冏)。

相关文章

  • 实时抓取空气质量数据

    利用如下网址来获取某个城市的空气质量 http://pm25.in/ 人家本来是提供了API的,而且也有公共Tok...

  • 03_中央气象台

    简述 继续分析抓取气象数据练习,本节主要抓取实时气象数据。抓取数据请勿存档,商用请联系官方。 爬取对象 抓取中央气...

  • 快手数据合作

    实时稳定数据抓取协议QQ:20493301

  • 10_全国空气质量预报信息发布

    简述 本节抓取中国环境监测总站发布的全国重点城市 / 区域空气质量预报数据 目标对象 全国空气质量预报信息发布数据...

  • 抓取行实时情数据

    利用 puppeteer[https://github.com/puppeteer/puppeteer] 抓取 h...

  • 蓝牙4.0/4.1/4.2 BLE协议监控分析仪

    典型应用: - 抓取BLE蓝牙传输数据,分析数据传输协议; - 协助开发调试BLE相关软件,固件; - 实时捕获、...

  • Python-Scrapy抓取中国空气质量全站数据-ChinaA

    本节知识点主要是Scrapy对接selenium 目标抓取每个城市空气质量指数日历史数据 分析网页数据结构1.1....

  • 空气质量管家

    想实时了解您所在城市的空气质量吗?想知道实时空气质量吗?想知道PM25值是多少吗?青红空气质量管家可以快速、准确了...

  • 不足1%人会用excel制作空气质量分布地图

    之前分享给大家一篇文章《震惊!90%的人都不知道excel的一键数据爬虫技能》,里面介绍如何抓取空气质量数据。有网...

  • 小程序初体验

    简述 本文简述小程序实现过程,及总结期间遇到问题 需求分析 基于以往抓取空气质量数据,实现微信小程序中展示城市小时...

网友评论

      本文标题:实时抓取空气质量数据

      本文链接:https://www.haomeiwen.com/subject/kyhwuttx.html