专栏名称: 城长数据
ArcGIS for Urabn planning.主要面向城市规划专业,通过全方位的ArcGIS技术与方法讲解,达到高效运用ArcGIS ,以辅助城市规划设计及研究的目的。
目录
相关文章推荐
51好读  ›  专栏  ›  城长数据

【视频】如何使用Python采集全国1000+环境监测站点实时空气质量数据?

城长数据  · 公众号  ·  · 2017-03-22 07:22

正文

请到「今天看啥」查看全文


系统讲解如何使用Python采集全国1000+环境监测站点实时空气质量数据。这是我录制的第一个视频教程,讲得不好还请大家海涵。 请大家不要频繁的去抓取这个网站,避免网站过载宕机,做一个有道德的城市规划师。


百度文库上有监测站点的坐标文件,字段链接后即可进行空间数据分析。本视频未包括该步骤讲解,后续正式视频会有这方面的内容。请保证网络状况良好,否则可能抛出异常,大家也可自行添加异常处理代码。


高清视频请移步:https://v.qq.com/x/page/g0386bt6wg0.html


代码如下:


# -*- coding: utf-8 -*-

import requests

from lxml import etree


def get_city_lst():

res = requests.get('http://www.tianqihoubao.com/aqi/')

html = res.text

res = etree.HTML(html)

data = res.xpath('//*[@class="citychk"]/dl//a/@href')

city_lst = list(set(data))

return city_lst


def download_data(path,city_lst):

fl = open(path,'w')

for city in city_lst:

res = requests.get('http://www.tianqihoubao.com' + city)

html = res.text

res = etree.HTML(html)

data = res.xpath('//table//td/text()')

data = ''.join(data).strip().replace(' ','').split()

city_name = res.xpath('//h1/text()')[0].split(u'空气')[0]

data = [i.encode('gbk') for i in data]

for i in range(0,len(data)/9):

da = data[i*9:(9+(i*9))]

fl.writelines(city_name.encode('gbk') + ',' + ','.join(da))

fl.writelines('\n')

print city_name + u'下载完成!'

fl.close()


if __name__ == "__main__":

path = './data/pm25_all.csv'

city_lst = get_city_lst()

download_data(path,city_lst)

print u'全部数据下载完成!'








请到「今天看啥」查看全文