3.1.1 一条简单的蜘蛛规则
3.1.2 Spider成员属性
- Spider.Id
编写规则时无需指定,为SpiderQueue自动设置; - Spider.Name
规则名称,必须设置,且须保证全局唯一,在Task任务分发及规则列表中调用; - Spider.Description
规则描述,将在规则列表中显示; - Spider.Pausetime
设置暂停时间Pausetime[0]~Pausetime[0]+Pausetime[1],一般在UI统一设置,无需在规则中设置; - Spider.MaxPage
在UI设置,规则中涉及采集页数控制时,调用该属性值; - Spider.UseCookie
控制下载器的两种运行模式,为true时支持登录功能,为false时支持大量UserAgent随机轮换,需在规则中指定; - Spider.Proxy
代理服务器; - Spider.RuleTree
采集规则的核心部分,包含所有规则解析函数; - Spider.RuleTree.Root
规则树的树根,即采集规则的执行入口函数; - Spider.RuleTree.Trunk
规则树树干,map[string]*Rule类型,包含除入口函数外,所有解析规则; - Spider.RuleTree.Trunk[“name”]Rule
就像是树干上的树枝一样,它是规则树上的一条解析规则; - Rule.OutFeild
输出字段,在非数据库的输出方式(Excel/csv)中作为标题行,规则中提交结果时,字段名应依赖改字段,该条Rule有OutFeild与该条规则有无结果输出必须保持一致; - Rule.ParseFunc
下载内容的解析函数,有系统根据response指定Rule自动调用; - Rule.AidFunc
辅助函数,根据需要你可以自由定制各种处理方法,例如最常用的便是批量生成请求。
3.1.3 Spider中常用方法讲解
- func (self Spider) AddOutFeild(respOrRuleName interface{}, feild string)
动态追加OutFeild切片成员,速度不如静态字段快 respOrRuleName接受Response或string两种类型,为*Response类型时指定当前Rule; - func (self *Spider) AddQueue(param map[string]interface{}) 向调度器添加请求;
- func (self *Spider) BulkAddQueue(urls []string, param map[string]interface{})
批量添加同一类请求,要求除url不同外,其他请求参数相同; - func (self Spider) Parse(ruleName string, resp context.Response)
调用指定Rule下的ParseFunc方法; - func (self *Spider) Aid(ruleName string, aid map[string]interface{}) interface{}
调用指定Rule下的AidFunc方法; - func (self Spider) OutFeild(respOrRuleName interface{}, index int) string
获取指定Rule的OutFeild,respOrRuleName接受Response或string两种类型,为*Response类型时指定当前Rule; - func (self *Spider) GetKeyword() string
获取UI输入的自定义字符串; - func (self *Spider) GetMaxPage() int
获取UI输入的最大采集页数限制; - func (self Spider) GetRules() map[string]Rule
获取整个规则树;