这是我的想法和我早期的工作。
我的目标
- 连续从中国政府获取 1 小时分辨率的空气污染数据。
- 从全国各地的监测网站收集的网站数据每小时更新一次。
我的代码
现在,我可以在一个小时内获取有用的信息。这是我的代码:
输入不同污染的网站链接(co、no2、pm10 等)
html_co = urllib.urlopen("http://www.pm25.in/api/querys/co.json?city=beijing&token=5j1znBVAsnSf5xQyNQyq").read().decode('utf-8') html_no2 = urllib.urlopen("http://www.pm25.in/api/querys/no2.json?city=beijing&token=5j1znBVAsnSf5xQyNQyq").read().decode('utf-8') html_pm10 = urllib.urlopen("http://www.pm25.in/api/querys/pm10.json?city=beijing&token=5j1znBVAsnSf5xQyNQyq").read().decode('utf-8')
获取 html 文档的内容。
soup_co = BeautifulSoup(html_co) soup_no2 = BeautifulSoup(html_no2) soup_pm10 = BeautifulSoup(html_pm10)
从整个内容中提取有用的信息。
l = soup_co.p.get_text() co= json.loads(l) l = soup_no2.p.get_text() no2= json.loads(l) l = soup_pm10.p.get_text() pm10= json.loads(l)
将原始数据压缩成整洁的 Pandas.Dataframe。
data = {"time":[],"station":[],"code":[],"co":[],"no2":[],"pm10":[]} for i in range(0,len(pm10)-1,1): ## 'station' is the monitor station's name in Chinese data["station"].append(co[i]["position_name"]) data["time"].append(co[i]["time_point"]) data["co"].append(co[i]["co"]) ## 'code' is the monitor station's index data["code"].append(co[i]["station_code"]) data["no2"].append(no2[i]["no2"]) data["pm10"].append(pm10[i]["pm10"])
我的结果
一些预先说明
我的问题
现在,我可以根据上面的代码手动获取网络数据。但是,我想自动实现每小时以下的工作流程。
小时我
执行代码
(1) 从网站上获取 Hour i 的空气污染物数据;
(2)根据真实日期将数据保存为.csv(如20160101.csv)
一个小时以后。
执行代码
(1)从网站上获取Hour i+1的空气污染物数据;
(2) 根据真实日期将数据保存为.csv。
如果它是同一天,比作小时 i --> 相同
的 .csv(如 2016-01-01.csv)如果现在已经过去 -> 创建一个新的 .csv(如 2016-01-02.csv)
我以前没有做过这种事情。有人可以给我一些建议吗?
所以,我可以在后台运行一个有用的数据抓取工具,我不必担心它。