前言:昨天起來去上班,出門發現空氣是那麼的渾濁,沒有呼吸到一點新鮮空氣。不用說肯定是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數據就獲取下來了,接下來就是對數據進行分析了,下篇文章再和大家分享!