package
0.0.0-20241113072534-4ea02956913a
Repository: https://github.com/forestyc/playground.git
Documentation: pkg.go.dev

# README

crawler

爬虫列表

交易所内容标签
yage雅歌yage

执行爬虫

1、执行单个爬虫

./crawler -task "gfex-news"

2、执行多个爬虫

./crawler -task "gfex-news gfex-announcement gfex-focus"

注意:

  • -task后的参数必须在""内

添加爬虫任务

1、目录结构

文件夹说明描述
crawler
-app代码目录代码目录
---commoncommoncommon
---configconfigconfig
---contextcontextcontext
---daodaodao
---handlerdaodao
---crawlercrawlercrawler
---utilutilutil
-etc配置目录配置目录
-crawler.gomainmain
-README.mdreadmereadme
-CHANGELOG.mdchangelogchangelog

2、实现接口

type Crawler interface {
    Init(ctx context.Context, config zap.Config)
    Run()
}

3、实现爬取逻辑

  • 在logic创建someexchange目录,并实现logic
type Something struct {
    ctx     context.Context   // 必须包含context,ctx包含db及cache等公共中间件
    // todo: 自定义
    ...
}

func (cs *Something) Init(ctx context.Context, config zap.Config) {
    // 初始化ctx、日志(必须包含)
    cs.ctx = ctx
    cs.ctx.C.Log = config
    cs.ctx.Logger = zap.NewZap(cs.ctx.C.Log)
    // todo: 自定义
    ...
}

func (cs *Something) Run() {
	// todo: 自定义
	...
	cs.ctx.Wg.Done()    // 必须调用,通知主协程任务完成
}
  • 在handler创建someexchange目录,并实现handler

3、注册任务

打开cmd/crawler/logic/schedule.go,注册任务

// Register 注册
func Register(c context.Context) {
    ctx = c
    crawler = map[string]Crawler{
        "gfex-news":              &gfex.GfexNews{},                 // 广期所-本所要闻
        "gfex-announcement":      &gfex.GfexAnnouncement{},         // 广期所-通知公告
        "gfex-focus":             &gfex.GfexFocus{},                // 广期所-媒体聚焦
        "someexchange-something": &someexchange.Something{},        // 某交易所-某内容
    }
}

# Packages

No description provided by the author