在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的人更多嘛,这样子高级定制会方便一些。

转载于:https://my.oschina.net/flashsword/blog/175349

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值