閒聊

[閒聊] 圖書館MARC 21 &CMARC資料

恩 原本以為是一個簡單的程式工作,叫我用vb.net透過書本isbn 去撈他的書籍相關資料
查了一下似乎沒有相關的api可以使用,所以當然而的就跑去國家圖書館撈他網頁回來分析資料啦
isbn有10碼跟13碼這不是問題,反正都是丟去給國圖網頁處理
只是處理的機讀資料有點難搞

000    cam0
010 0  $a978-986-225-005-1$b平裝$dNT$250
091    $acw$bCIP97014167
100    $a20080725d2008    k  y0chiy50      e
101 0  $achi
102    $acw
200 1  $a15分鐘就上桌$e第一次進廚房也OK,圍上圍裙的料理初驗體$fBoutique會社編著
205    $a初版
210    $a臺北縣中和市$c漢湘文化$d2008.11
211    $a0811
215 0  $a  面$d  公分
606    $2cst$a食譜

資料就類似這樣,所以大致上會知道像是200 裡面的$a就會是書名 210的$c是出版社 $d是出版日期…
good!知道這些分類後 至少有個大概的概念,討厭的正規表示式寫一下應該就完成了(這邊我還是要特別說,雖然寫過好幾次regex 但是每次還是都要測試好久才會得到我要的東西..)

原本我以為事情就這麼的簡單完美就結束了,直到我隨手打了幾本書的isbn到我的程式裡面出現了error我才發現事情並不是這麼樣的單純。

原來MARC還有分阿!! 接下來就又是不斷的google 知道其實大致上有分兩種,CMARC跟MARC 21這兩個,而光cmarc3的欄位就有173個,且也不是每本書都會有這些欄位,看那個出版商有沒有填,而悲慘的是marc21的資料跟cmarc的資料其實不是很對的起來 格式代號也都不一樣

這就造成了我去撈國圖資料時 我還得必須判斷他是哪種的marc才能決定我的內容的標示塊該套哪個數字

就拿書名舉例來說好了,書名在cmarc裡面是200$a 但是在marc21裡面卻是245$a
作者:cmarc->200$f 而marc21->245$c
這下就囧了,而網路上也找不太齊全這些對照的資料,就為了這個搞了一個下午,而時間都是花在google而不是寫code
最後終於大致上整理出來我要的欄位跟他們對應的標示塊後

我又跑去丟資料給國圖吃 發現怎有些少數書籍資料還是錯的,原本以為是我code哪裡寫錯了,而看了html data後才發現,搞啥鬼阿,國圖撈回來的書的資料本來就是錯的 感覺一整個就很不可靠

雖然大致上就這樣算交差了啦,原始資料就是錯的我也沒辦法。程式沒辦法思考也只能這樣了

只是當時國圖的這些資料到底是誰建的阿…出版商?國圖工讀生? 囧

2 comments

Hi David:
請教一個基本的問題: 如何去國家圖書館撈他網頁回來分析資料呢? 他們有API嗎? 要怎麼撈呢?
我也想寫一個程式去抓一些書本的基本資料,目前我們教會的圖書館有大約4000本書,還在增加中,想直接去國圖的資料裡抓,就不用自己打了!

謝謝哦

Clement

Leave a Comment

你的電子郵件位址並不會被公開。

(若看不到驗證碼,請重新整理網頁。)