空气质量数据学者们经常使用的数据之一,但是统计年鉴中很难找到地级市层面的空气质量数据。哪里会提供呢?其实,大家只要百度“PM2.5数据”就会发现中国空气质量在线监测分析平台(https://www.aqistudy.cn/historydata/)提供了全国384个城市和地区详细的空气质量数据。
今天给大家分享的就是爬取中国空气质量在线监测分析平台数据的爬虫程序。这个爬虫程序的思路就是先爬取城市名,然后再爬取各个城市的空气质量数据。因为这个网站网址命名规则是这样的:
https://www.aqistudy.cn/historydata/monthdata.php?city=上海
https://www.aqistudy.cn/historydata/monthdata.php?city=北京
…….根据上面的思路,经过反复测试,使用下面的代码爬取了384个城市和地区2013年12月至2020年4月的空气质量数据(部分城市是2014年或更晚才有数据):
- import requests
- from lxml import etree
- import urllib.parse
- headers = {
- 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.204 Safari/537.36'
- }
- url = "https://www.aqistudy.cn/historydata/"
- response = requests.get(url, headers=headers)
- text = response.content.decode('utf-8')
- html = etree.HTML(text)
- city_set = list()
- citys = html.xpath("//div[@class='all']/div/ul")
- for city in citys:
- messages = city.xpath(".//li")
- for message in messages:
- city_name = message.xpath(".//a/text()")
- city_name = "".join(city_name)
- # print(city_name)
- city_set.append(city_name)
- print(city_set)
- import time
- from urllib import parse
- import pandas as pd
- from selenium import webdriver
- driver = webdriver.PhantomJS(r'D:/爬虫下载/phantomjs-2.1.1-windows\bin\phantomjs.exe')
- base_url = 'https://www.aqistudy.cn/historydata/monthdata.php?city='
- for k in range(0,len(city_set)):
- city = city_set[k]
- print(city)
- weburl = ('%s%s' % (base_url, parse.quote(city)))
- print(weburl)
- driver.get(weburl)
- time.sleep(1)
- dfs = pd.read_html(driver.page_source,header=0)[0]
- time.sleep(0.5)
- dfs.to_csv(r'D:\爬虫下载\空气质量\%s.csv'% (str(city)),mode='a+',encoding='utf_8_sig')
- # dfs.to_csv(r'D:\爬虫下载\空气质量\pm25.csv', mode='a+', encoding='utf_8_sig', index=0)
- driver.quit()
- print ('爬虫已经爬完!请检测!')
说明:因为网站上实际上没有部分城市和地区的空气质量数据(具体是保亭、白沙、昌江、澄迈、儋州、定安、东方、乐东、临高、陵水、琼海、琼中、屯昌、万宁、文昌和五指山这16个城市和地区),所以这些城市和地区爬取下来的会是空白。


雷达卡




京公网安备 11010802022788号







