Grabant Grabant使用方法 介绍
Grabant
Grabant是一个用go语言开发,用javascript语法书写规则的爬虫框架 规则开发和神箭手的爬虫规则类似,开发的目的是兼容大部分神箭手已有的规则
一些相关解释及说明如下:
举个栗子: 如下是一个简易的爬豆瓣电影评分的规则
var configs = { domains: ["movie.douban.com"], interval: 3000, scanurls: ["https://movie.douban.com/cinema/Nowplaying/shenzhen/"], helperurlregexes: ["https://movie\\.douban\\.com/subject/\\d+/\\?from=playing_poster"], fields: [ { name: "film Name", selector: "//*[@id=\"content\"]/h1/span[1]", required: true }, { name: "Rank", selector: "//*[@id=\"interest_sectl\"]/div[1]/div[2]/strong" required: true } ] }; // 使用以上配置创建一个爬虫对象 var crawler = new Crawler(configs); // 启动该爬虫 crawler.start();
- domains
定义应用爬取哪些域名下的网页
- interval
爬取页面需要的延时,毫秒
- scanUrls
定义入口页url, 从入口页url开始爬取数据
- contenturlregexes
设置内容页url的正则表达式
- helperurlregexes
设置列表页url的正则表达式
- field
- name
抽取项的名称
- selector
抽取项的匹配规则,可以是正则表达式或者Xpath
- selectortype
定义抽取区的类型,正则为SelectorType.Regex, XPath为SelectorType.XPath,如果不设置默认为XPath
bool类型,如果为true,则此项必须存在才爬取此数据
使用方法
grabant -rule /路径/规则文件
go get github.com/robertkrimen/otto go get github.com/bitly/go-simplejson go build
此版本是一个原型版本,目前还有很多判断不严密的可能引起crash的问题;
和神箭手不同之出目前有两个,一是configs项区分大小写,需要全为小写,二fields中selector只支持字符正则;
现在此版本还未实现多个对象及回调方法,只支持最简单的json规则.