2010年9月3日 星期五

唉!抓資料到連 iqy 都出動了!

在網頁上抓資料還有一個很恐怖的狀況,就是網頁上只有表格資料,當全選、複製、貼上到 Excel 時會有恐怖的破格現象!

不過還好 Excel 本身有個功能,可以從網頁上匯入資料,就是「資料」→「匯入外部資料」,但!還是碰到一個問題,就是要抓取的頁面還是很多頁,當每次輸入網址後,還要點選下一頁,然後在打勾要匯入的表格區塊,就又花掉好多點擊動作!還好這動作可以另存成一個 *.iqy 檔,紀錄抓取網址與欄位位置。
WEB
1
http://www.twse.com.tw/ch/listed/listed_company/new_listing.php?page=2

Selection=7
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False

不過唯一不足的地方就是一個檔案只能指示一個頁面,不同頁面就要給予不同的 iqy。嘗試把兩組(多組)合併成一個檔案,匯入到 Excel 時也只能讀取一個頁面的資料。所以這裡只能用很笨的方法,產生所需要抓取資料的頁數的 iqy 檔案,共有多少頁,就產生多少個 iqy 檔案!產生檔案的程式如下
iiqy.iiqy([tse,otc], page)

最後就會產生數個 iqy 檔,然後在慢慢的讀取。感覺有點笨,但這是目前最快的方法了,我的資料也抓完了!給大家參考吧!

不!我真的很懶惰,還是交給 python 抓成交量吧!

研究生找資料常常都會遇到一個問題,就是資料來源本身不連續,就要自己手動抓取處理,但這樣對一個像我一樣懶惰的人來說,一直重複著相同動作是要了研究生的命。

我的論文研究有一部份要抓取大盤(加權指數)日成交量的數據,在證交所網站上是以為單位下載。而我需要遠到 1997 年的資料,這樣我必須下載 175 次,然後再做至少 175 次的資料合併!不!我真的很懶惰,還是交給 python 吧!

以下就是順手寫的小程式抓取資料:
class ggm(年度,儲存檔名):
  • 年度:都是以最新往前到指定的年度為止,包含該年度
  • 儲存檔名:是指最後資料輸出成 csv 檔的檔名

例如:
ggm(1997,'2010-1997-Data')
跑完就會出現 '2010-1997-Data.csv' 檔案,裡面就有相關的大盤日成交量資料。

有需要的就請參考以下程式吧:

不過我還是要說啦!東西做出來就是我賺到了,老闆念我都在處理技術的問題,但我就是喜歡這樣一次抓完的爽度,我就是不喜歡一筆一筆慢慢來,所以 ... 繼續懶惰!