【待完成 #TODO】資料清洗前期作業

字串操作是資料清洗必備的基礎,可以通過解析 HTML,但純字串解析 HTML 會導致程式容錯,不便維護,因此一般不建議這樣操作。

以中國鐵路為例,網址在這:中國鐵路,要找到網站資訊,在 Network -> JS 標籤,在 name 底下找到 station_name.js。

點擊 2 下就會看到下圖

字串操作主要用於個別資料清洗,且資料具有一定的特性,如下圖。

內容分析下來發現,每個城市有 5 個資訊,從特殊字元”@” 開始,每個資訊之間使用”|”隔開,如果想取得第二和第三個資訊,可以根據其特性”|”進行字串分割,程式如下:

import requests
def city_name():
    #建置請求標頭
    headers = {'User-Agent':
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
                'Referer':
                'https://kyfw.12306.cn/otn/leftTicket/init'}
    url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9181'
    city_code = requests.get(url, headers=headers, verify=False)

    #資料使用字串操作處理
    city_code_list = city_code.text.split("|")
    city_dict = {}
    for k, i in enumerate(city_code_list):
        if '@' in i:
            #程式名作為字典的key,程式編號作為字典的value
            city_dict[city_code_list[k+1]]=city_code_list[k+2].replace(' ','')
        return (city_dict)
#輸出處理後的資料
print(city_name())

輸出結果:{‘北京北’: ‘VAP’}

原先預計獲取完整資料,待完成。

___________

除了 split 對字串進行分割之外,資料設定值之前需要用 replace() 取代空白內容。

在一些設計不標準的網站中,HTML 重的資料經常帶有空白內容和特殊符號,可以使用 replace() 對這種資料進行清洗。

Leave a Comment

Your email address will not be published. Required fields are marked *