全國最氣溫統計及氣溫排名


                                                      一個完整的大作業

1.選擇一個自己感興趣的問題

       我選取的是一個中國天氣預報網站,爬去‘’ http://www.weather.com.cn/textFC/hb.shtml‘’的內容。

       全球氣候變暖是一種和自然有關的現象,是由於溫室效應不斷積累,導致地氣系統吸收與發射的能量不平衡,能量不斷在地氣系統累積,從而導致溫度上升,造成全球氣候變暖。在人類近代歷史中才有一些溫度記錄。這些記錄的來源不同,精確度和可靠性也參差不齊。在1850年前的一兩千年中,雖然曾經出現中世紀溫暖時期與小冰河時期,但是大眾一直相信全球溫度是相對穩定的。在1860年才有類似全球溫度的儀器記錄,當年的記錄很少考慮的城市熱島效應的影響。但是根據儀器記錄,1860~1900年期間,全球陸地與海洋的平均溫度上升了0.75℃;自1979年開始,陸地溫度上升幅度約為海洋溫度上升幅度的一倍(陸地溫度上升了0.25℃,而海洋溫度上升了0.13℃)。同年,人類開始利用衛星溫度測量來量度對流層的溫度,發現對流層的溫度每十年上升0.12℃至0.22℃。2000年之后,多方組織對過去1000年的全球溫度進行了研究,對這些研究成果進行對比和討論后發現,自1979年開始的氣候轉變的過程是十分清晰。此外,其他的研究報告顯示,從20世紀初開始至今,地球表面的平均溫度增加了約1.1f(0.6℃);在過去的40年中,平均氣溫上升約0.5f(0.2-0.3℃);在20世紀,全球變暖的程度是更超過在過去400-600年中任何一段時間.。

 

 2.網絡上爬取相關的數據。

 

源代碼如下:
import time
from echarts import Echart, Bar, Axis
from bs4 import BeautifulSoup  # 網絡分析

# pip install echarts-python 百度開源的做圖標的庫
# 定義全局列表
TEMPERAUTE_LIST = []
CITY_LIST = []
MIN_LIST = []
MAX_LIST = []


# 定義獲取並過濾數據函數
def get_temperature(url):
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    conMidtab = soup.find('div', class_='conMidtab')
    conMidtab2_list = conMidtab.find_all('div', class_='conMidtab2')
    for x in conMidtab2_list:
        tr_list = x.find_all('tr')[2:]
        province = ''
        min = 0
        for index, tr in enumerate(tr_list):
            # 如果是第0個tr標簽,那么城市名名和省份是放在同一行tr的,省份名放在td[0],城市名放在td[1]
            if index == 0:
                td_list = tr.find_all('td')
                province = td_list[0].text.replace('\n', '')
                city = td_list[1].text.replace('\n', '')
                max = td_list[4].text.replace('\n', '')
                min = td_list[7].text.replace('\n', '')
            else:
                # 如果不是第0個tr標簽,那么在這個tr標簽中只存放城市名,城市名放在td[0]
                td_list = tr.find_all('td')
                city = td_list[0].text.replace('\n', '')
                max = td_list[3].text.replace('\n', '')
                min = td_list[6].text.replace('\n', '')
            # print(province + '省  ' + city + '市', max + '℃', min + '℃')
            TEMPERAUTE_LIST.append({
                'city': province + city,
                'min': min
            })
            CITY_LIST.append(province + city)
            MIN_LIST.append(min)


def main():
    urls = ['http://www.weather.com.cn/textFC/hb.shtml ',
            'http://www.weather.com.cn/textFC/db.shtml ',
            'http://www.weather.com.cn/textFC/hd.shtml ',
            'http://www.weather.com.cn/textFC/hz.shtml ',
            'http://www.weather.com.cn/textFC/hn.shtml ',
            'http://www.weather.com.cn/textFC/xb.shtml ',
            'http://www.weather.com.cn/textFC/xn.shtml ',
            ]
    for url in urls:
        get_temperature(url)
        time.sleep(2)

    SORTED_TOP20_TEMPERATURE_LIST=sorted(TEMPERAUTE_LIST,lambda
        x,y:cmp(int(x['min']),int(y['min'])))
    TOP20_TEMPERATURE_LIST =SORTED_TOP20_TEMPERATURE_LIST[0:20]
    TOP20_CITY_LIST =[]
    TOP20_MIN_LIST =[]
    for city_min in TOP20_TEMPERATURE_LIST:
        TOP20_CITY_LIST.append(city_min['city'])
        TOP20_MIN_LIST.append(city_min['min'])


    echart = Echart(u'全國最低溫度排名', u'氣溫統計')
    bar = Bar(u'最低溫度', TOP20_MIN_LIST)  # 縱坐標
    axis = Axis('category', 'bottom', data=TOP20_CITY_LIST)  # 橫坐標
    echart.use(bar)  # 畫布畫縱坐標
    echart.use(axis)  # 畫布畫橫坐標
    echart.plot()


if __name__ == '__main__':
    main()

3、運行結果:  

全國最高最低氣溫統計表

全國最低氣溫排名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM