Python的學習筆記案例8--空氣質量指數計算6.0

前面幾節講到網絡爬蟲,但是在分析數據時效率不高。

鑑於網頁中HTML的樹形結構,我們可以引入一個新的庫--BeautifulSoup4用於解析HTML或XML。

如何安裝第三方庫:BeautifulSoup4?(我會新增一篇文章講如何安裝第三方庫,此節不多說。)
1、默認是安裝在Anaconda中
2、如果沒有安裝可以在命令窗口cmd中執行以下命令:
    pip install beautifulsoup4
    import bs4

使用BeautifulSoup庫的步驟:
    1、創建BeautifulSoup對象
    2、查詢節點
        find,找到第一個滿足條件的節點
        find_all 找到所有滿足條件的節點
    可按節點類型、屬性或內容訪問
    例如:有這樣一段HTML:<a href='abcd' class='efgh'>a_value</a>
    按照類型查找節點:
    bs.find_all('a')
    按照屬性查找節點:
    bs.find_all('a', href='abcd')
    bs.find_all('a', class_='efgh')
    注意:是class_   (因爲:class是關鍵字)
    或者:bs.find_all('a', {'class': 'efgh')
    按照內容查找節點:
    bs.find_all('a', href='abcd', string='a_value')

可以查看網頁的HTML代碼(選中部分就是需要抓取的內容),右鍵鼠標--查看網頁源代碼:

那麼就開始獲取一個城市所有的AQI指標值:

"""
    作者:lanxingbudui
    日期:2020-02-25
    功能:AQI計算
    版本:6.0
"""

import requests
from bs4 import BeautifulSoup


def get_city_aqi(city_pinyin):
    """
        獲取一個城市的所有AQI指標
    """
    url = 'http://pm25.in/' + city_pinyin
    r = requests.get(url, timeout=30)  #鏈接網頁請求
    print(r.status_code)  #打印返回結果,200成功 400失敗
    soup = BeautifulSoup(r.text, 'lxml')  #創建BeautifulSoup對象
    div_list = soup.find_all('div', {'class': 'span1'}) #查找所有spen1屬性的節點
    # 或者 = soup.find_all('div', class_ = 'spanl')  # 不推薦這樣寫,因爲class是關鍵字,有時容易忘記下劃線。

    city_aqi = []
    for i in range(8):
        div_content = div_list[i]
        caption = div_content.find('div', {'class': 'caption'}).text.strip()        
        value = div_content.find('div', {'class': 'value'}).text.strip()
        # .text是獲取屬性值,並且.strip()移除上步驟中 text 字符串頭尾的空格或換行符
        city_aqi.append((caption, value))
    return city_aqi


def main():
    """
        主函數
    """
    city_pinyin = input('請輸入城市拼音:')
    city_aqi = get_city_aqi(city_pinyin)
    print(city_aqi)


if __name__ == '__main__':
    main()

 

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