3.1.1 一条简单的蜘蛛规则

     

    3.1.2 Spider成员属性

    1. Spider.Id
      编写规则时无需指定,为SpiderQueue自动设置;
    2. Spider.Name
      规则名称,必须设置,且须保证全局唯一,在Task任务分发及规则列表中调用;
    3. Spider.Description
      规则描述,将在规则列表中显示;
    4. Spider.Pausetime
      设置暂停时间Pausetime[0]~Pausetime[0]+Pausetime[1],一般在UI统一设置,无需在规则中设置;
    5. Spider.MaxPage
      在UI设置,规则中涉及采集页数控制时,调用该属性值;
    6. Spider.UseCookie
      控制下载器的两种运行模式,为true时支持登录功能,为false时支持大量UserAgent随机轮换,需在规则中指定;
    7. Spider.Proxy
      代理服务器;
    8. Spider.RuleTree
      采集规则的核心部分,包含所有规则解析函数;
    9. Spider.RuleTree.Root
      规则树的树根,即采集规则的执行入口函数;
    10. Spider.RuleTree.Trunk
      规则树树干,map[string]*Rule类型,包含除入口函数外,所有解析规则;
    11. Spider.RuleTree.Trunk[“name”]Rule
      就像是树干上的树枝一样,它是规则树上的一条解析规则;
    12. Rule.OutFeild
      输出字段,在非数据库的输出方式(Excel/csv)中作为标题行,规则中提交结果时,字段名应依赖改字段,该条Rule有OutFeild与该条规则有无结果输出必须保持一致;
    13. Rule.ParseFunc
      下载内容的解析函数,有系统根据response指定Rule自动调用;
    14. Rule.AidFunc
      辅助函数,根据需要你可以自由定制各种处理方法,例如最常用的便是批量生成请求。

    3.1.3 Spider中常用方法讲解

    1. func (self Spider) AddOutFeild(respOrRuleName interface{}, feild string)
      动态追加OutFeild切片成员,速度不如静态字段快 respOrRuleName接受
      Response或string两种类型,为*Response类型时指定当前Rule;
    2. func (self *Spider) AddQueue(param map[string]interface{}) 向调度器添加请求;
    3. func (self *Spider) BulkAddQueue(urls []string, param map[string]interface{})
      批量添加同一类请求,要求除url不同外,其他请求参数相同;
    4. func (self Spider) Parse(ruleName string, resp context.Response)
      调用指定Rule下的ParseFunc方法;
    5. func (self *Spider) Aid(ruleName string, aid map[string]interface{}) interface{}
      调用指定Rule下的AidFunc方法;
    6. func (self Spider) OutFeild(respOrRuleName interface{}, index int) string
      获取指定Rule的OutFeild,respOrRuleName接受
      Response或string两种类型,为*Response类型时指定当前Rule;
    7. func (self *Spider) GetKeyword() string
      获取UI输入的自定义字符串;
    8. func (self *Spider) GetMaxPage() int
      获取UI输入的最大采集页数限制;
    9. func (self Spider) GetRules() map[string]Rule
      获取整个规则树;