1. 程式人生 > 實用技巧 >在webmagic中加入了自定義語言

在webmagic中加入了自定義語言

一直想在webmagic中加入一門自定義語言(領域特定語言,簡稱DSL),但是實在無力從語法解析層開始寫起。嘗試過在XPath上做文章,後來又覺得太難過了。今天又聊到這個話題,想到當年接觸過的Ruby,找到了這個Ruby的簡易爬蟲專案:https://github.com/mion/harvestman

JVM上一個好處就是有很多奇怪的庫,而且這些庫還非常的成熟,比如JRuby,Jython以及rhino。於是鼓搗半天,整出了一個DSL的雛形(基於JRuby): <!-- lang: ruby --> title = css "div.BlogTitle h1" content = css "div.BlogContent" urls "http://my\.oschina\.net/flashsword/blog/\d+"

感覺還是非常強大的!最強大之處是你大概不知道它是Ruby,好像你也不怎麼需要會Ruby的語法...

可惜JRuby雖酷,但是遇到複雜情況定製起來可能會有點難度,畢竟會Ruby的人不那麼多。這時我又想到了廣大程式設計師喜聞樂見的Javascript!於是有了Javascript版本DSL(基於rhino):

<!-- lang: js -->
var result = {
    title: $("div.BlogTitle h1"),
    content: $("div.BlogContent")
}
var config = {
    ua: '',
    sleepTime : 20
}
urls("http://my\\.oschina\\.net/flashsword/blog/\\d+")

說真的它已經不算是DSL了,因為有明顯的js痕跡!不過沒關係,畢竟熟悉js的人更多嘛,這樣子高階定製會方便一些。

推薦:英文站怎麼推廣