我爬取了全國空氣質量指數數據,真相竟然是這樣!(上)

     前言:昨天起來去上班,出門發現空氣是那麼的渾濁,沒有呼吸到一點新鮮空氣。不用說肯定是PM2.5過高了,於是我想看看全國的空氣質量是怎樣的,並從中發現一些規律。

準備:

     step1:網站分析。這裏我們使用http://datacenter.mee.gov.cn/aqiweb2/這個網站可以實時獲取全國的AQI,具體什麼是AQI,大家可以自行百度。具體網站是這樣的,左上角是AQI實時報和AQI日報,右上角顯示的是當前日期。我們這裏想要的是當天日期和這些數據,但是由於這些數據是實時滾動的,不同容易獲取。但是可以發現這些數據是表格形式的,於是就想到了之前學的pandas。pandas中的read_html直接獲取表格數據,得到的將是目標網頁所有table表格的list集合。獲取到list集合有兩個值,一個是AQI實時報,另一個是AQI日報。

      step2:環境準備: python3.7 ,pycharm編輯器和requests ,pandas,lmx庫,沒有安裝這些庫的可以自行安裝。

 開始:接下來我把自己的代碼和大家分享一下,由於自己還是個小菜鳥,有錯誤的地方還請大家指出。在這裏再和大家理一下思路:爬取網站信息—信息處理—信息保存—信息分析。

  ‘’‘引入庫’‘’

import time
import requests
import pandas as pd
from lxml import etree

'''獲取網頁當前顯示的日期並做處理'''
url = "http://datacenter.mee.gov.cn/aqiweb2/"
res = requests.get(url)
encoding = res.apparent_encoding  #這一步是獲取網頁的編碼格式,後面會用到。
parsed_text = etree.HTML(res.text) #lmx庫解析網頁數據
#print(parsed_text)
timestamp = parsed_text.xpath('/html/body/div[3]/p/i/text()')[0].replace('年','-')\
    .replace('月','-').replace('日','-').replace('時',':00:00')  #通過Xpath獲取當前網頁現實的時間,並使用replace方法做時間格式處理

運行結果如下,這樣我們就得到了當前網站顯示的日期:

  '''使用pandas的read——html方法讀取數據,並做數據列名的處理'''

data_res=pd.read_html('http://datacenter.mee.gov.cn/aqiweb2/',encoding="gb2312")
#print(type(data_res)) 返回的是一個list型格式
data = data_res[0]
#print(data)
header = ['city', 'AQI', 'PM2.5', 'PM10', 'SO2', 'NO2', 'CO', 'O3', 'main_pollution']
data.columns = header
data['time'] = timestamp
print(data)

運行結果:

'''數據的保存'''
write_header = True
while 1: #使用while循環 600s
    if write_header is True:

        data.to_csv(r'C:\Users\Administrator\Desktop\day11\data.csv', index=False, mode='a', header=True) \
            # header = True 保留列名 index=True 保留索引
        write_header = False
        #print(write_header)
    else:
        # print("error")
        data.to_csv(r'C:\Users\Administrator\Desktop\day11\data1.csv', index=False, mode='a', header=False)
        #print('1234')
    print('Successfully crawled data of {} and saved it to file!'.format(timestamp))
    time.sleep(600)

運行結果:

 這樣我把全國各城市的AQI數據就獲取下來了,接下來就是對數據進行分析了,下篇文章再和大家分享!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章