close
前兩天去某客戶那邊開一個系統的驗收會議,雖然會議過程驚險萬分,不過最後總算是驗收過了。可是在會議中有委員提出了幾個建議,其中一個建議就是希望我們的銀行列表可以用最新的資料。因為我們有一個繳費功能,要使用者輸入銀行帳戶以及帳號資料,可是最近新興銀行一堆,之前也倒了一些銀行,所以他們希望這個列表可以即時更新。
這就讓我想到了一個作法,就是去不會倒的網站撈銀行列表回來自己做parsing,然後再將parsing後的資料存回我們的DB。後來我就找了一些資料,因為我懶的自己寫parser,想說可不可以利用CSS selector來做parsing,所以就找了一個可以用在.NET上面的CSS selector engine,叫做Fizzler。
Fizzler這個名字讓我想到Sizzle,Sizzle也是一個CSS selector engine,而且它還有jQuery的強大後盾,因為它就是jQuery的CSS selector engine。而且Fizzler也明白的寫出了「The tests are based on the jQuery selector engine tests」,果然跟jQuery有關係呀,所以拿來用應該是很快就可以上手才是。
其實Fizzler也使用了別的library,像是Html Agility Pack(HAP),HAP是一個用XPath來查詢的library,「HTML Agility Pack:簡單好用的快速 HTML Parser」這篇文章解釋的非常清楚,有興趣可以看看。
光是只有Fizzler還不夠,我們還要加上可以讀取網頁原始碼的程式,這樣子我們才能無所不抓。後來我找到了這篇文章「我要如何在ASP.NET中抓取來自於其他網站的資料 ?」,只要用HttpWebRequest跟主機要求網頁,然後用HttpWebResponse讀取資料,就把原始碼抓回來囉。接下來就是用Fizzler來完成parsing的工作囉。因為我還在研究,所以下一次再把原始碼release出來,有興趣的就再等等吧 XD。
參考資料:
fizzler - Project Hosting on Google Code
Sizzle JavaScript Selector Library
Html Agility Pack
XPath - 維基百科,自由的百科全書
HTML Agility Pack:簡單好用的快速 HTML Parser
旗標知識網:ASP.NET 論壇問答精選:我要如何在ASP.NET中抓取來自於其他網站的資料 ?
HttpWebRequest 類別 (System.Net)
HttpWebResponse 類別 (System.Net)
全站熱搜
留言列表