心平的學習歷程 - 111-1大數據分析 - 6.用python抓取每月營收 |
|
|
6.用python抓取每月營收程式碼:import pandas as pd import requests from io import StringIO import time def monthly_report(year, month): # 假如是西元,轉成民國 if year > 1990: year -= 1911 url = 'https://mops.twse.com.tw/nas/t21/sii/t21sc03_'+str(year)+'_'+str(month)+'_0.html' if year <= 98: url = 'https://mops.twse.com.tw/nas/t21/sii/t21sc03_'+str(year)+'_'+str(month)+'.html' # 偽瀏覽器 headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} # 下載該年月的網站,並用pandas轉換成 dataframe r = requests.get(url, headers=headers) r.encoding = 'big5' dfs = pd.read_html(StringIO(r.text), encoding='big-5') df = pd.concat([df for df in dfs if df.shape[1] <= 11 and df.shape[1] > 5]) if 'levels' in dir(df.columns): df.columns = df.columns.get_level_values(1) else: df = df[list(range(0,10))] column_index = df.index[(df[0] == '公司代號')][0] df.columns = df.iloc[column_index] df['當月營收'] = pd.to_numeric(df['當月營收'], 'coerce') df = df[~df['當月營收'].isnull()] df = df[df['公司代號'] != '合計'] # 偽停頓 time.sleep(5) return df # 民國100年1月 monthly_report(100,1) # 西元2011年1月 monthly_report(2011,1) 資料來源:https://colab.research.google.com/drive/1K6xogoKdSqY2GrkzwRm0I4QHew3t51y3?usp=sharing
|
|
中華科技大學數位化學習歷程 - 意見反應 |