楼主: 江河1703
3886 2

爬虫大法:空气质量数据的爬取 [推广有奖]

  • 0关注
  • 32粉丝

已卖:2381份资源

博士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
10978 个
通用积分
75.6425
学术水平
36 点
热心指数
38 点
信用等级
36 点
经验
7596 点
帖子
81
精华
0
在线时间
371 小时
注册时间
2019-1-12
最后登录
2025-7-6

楼主
江河1703 学生认证  发表于 2020-4-20 15:29:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
十八大以来,国家开始了一系列治理环境的举措;2015年柴静《穹顶之下》火爆全网,公众开始密切关注PM2.5问题。自此,环境经济学开始了逆袭之旅,从一个冷门学科一跃成为了热门学科。
空气质量数据学者们经常使用的数据之一,但是统计年鉴中很难找到地级市层面的空气质量数据。哪里会提供呢?其实,大家只要百度“PM2.5数据”就会发现中国空气质量在线监测分析平台(https://www.aqistudy.cn/historydata/)提供了全国384个城市和地区详细的空气质量数据。
01.png
今天给大家分享的就是爬取中国空气质量在线监测分析平台数据的爬虫程序。这个爬虫程序的思路就是先爬取城市名,然后再爬取各个城市的空气质量数据。因为这个网站网址命名规则是这样的:

https://www.aqistudy.cn/historydata/monthdata.php?city=上海

https://www.aqistudy.cn/historydata/monthdata.php?city=北京

…….

根据上面的思路,经过反复测试,使用下面的代码爬取了384个城市和地区2013年12月至2020年4月的空气质量数据(部分城市是2014年或更晚才有数据):

  1. import requests
  2. from lxml import etree
  3. import urllib.parse
  4. headers = {
  5.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.204 Safari/537.36'
  6. }
  7. url = "https://www.aqistudy.cn/historydata/"
  8. response = requests.get(url, headers=headers)
  9. text = response.content.decode('utf-8')
  10. html = etree.HTML(text)
  11. city_set = list()
  12. citys = html.xpath("//div[@class='all']/div/ul")
  13. for city in citys:
  14.     messages = city.xpath(".//li")
  15.     for message in messages:
  16.         city_name = message.xpath(".//a/text()")
  17.         city_name = "".join(city_name)
  18.         # print(city_name)
  19.         city_set.append(city_name)
  20. print(city_set)

  21. import time
  22. from urllib import parse
  23. import pandas as pd
  24. from selenium import webdriver
  25. driver = webdriver.PhantomJS(r'D:/爬虫下载/phantomjs-2.1.1-windows\bin\phantomjs.exe')
  26. base_url = 'https://www.aqistudy.cn/historydata/monthdata.php?city='
  27. for k in range(0,len(city_set)):
  28.     city = city_set[k]
  29.     print(city)
  30.     weburl = ('%s%s' % (base_url, parse.quote(city)))
  31.     print(weburl)
  32.     driver.get(weburl)
  33.     time.sleep(1)
  34.     dfs = pd.read_html(driver.page_source,header=0)[0]
  35.     time.sleep(0.5)
  36.     dfs.to_csv(r'D:\爬虫下载\空气质量\%s.csv'% (str(city)),mode='a+',encoding='utf_8_sig')
  37.     # dfs.to_csv(r'D:\爬虫下载\空气质量\pm25.csv', mode='a+', encoding='utf_8_sig', index=0)
  38. driver.quit()
  39. print ('爬虫已经爬完!请检测!')
复制代码
今天给大家分享的是月度空气质量数据,需要数据的朋友可以在公众号【功夫计量经济学】看到获取方式。昨天尝试了一下爬取精确到天的数据,由于数据量太大,足足爬了将近七八个小时,我可能后面要优化一下程序再分享给大家 04.png

说明:因为网站上实际上没有部分城市和地区的空气质量数据(具体是保亭、白沙、昌江、澄迈、儋州、定安、东方、乐东、临高、陵水、琼海、琼中、屯昌、万宁、文昌和五指山这16个城市和地区),所以这些城市和地区爬取下来的会是空白。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

沙发
maming412710 发表于 2020-5-2 10:43:15
好厉害!!

藤椅
半夏吹雪 在职认证  发表于 2020-6-24 16:35:38
请问有省级月度二氧化氮数据吗?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 15:52