nyn

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2018 License: MIT Imports: 9 Imported by: 0

README

NYN

NYN 是一个使用 Go 语言编写的爬虫框架.

GoDoc Go Report Card

使用例

参见这里

TODO

task-queue
  • 使用 bolt(bbolt)/leveldb/badger 重写任务队列, 替换目前使用 SQLite 实现的任务队列
data-packer
  • objpack
    • 验证类型签名时, 忽略没有字段的内嵌结构体
    • 忽略/记录未导出的字段?
task-manager
  • 实现新旧类型的转换方法
scheduler/simple-scheduler
  • 实现支持 ModeMonitor
nyn
  • crawler.GetShared(), crawler.SetShared(), 同类型任务间共享的内容
  • 用 TaskHandler 替代任务委托中传入的 Crawler
    • Crawler.TaskLog -> TaskHandler.TaskLog
  • 考虑使用 swift 重写 (这个爬虫框架的思路在 Go 上显得很繁琐, 但配合 Swift 的 protocol + extension (+ 错误处理机制 + …)应该会清晰不少)

文档

  • 编写英文文档/注释
  • 补充更详细的说明

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Crawler

type Crawler struct {
	Global map[string]interface{}
	// contains filtered or unexported fields
}

Crawler 是爬虫

func NewCrawler

func NewCrawler(opts CrawlerOptions) (c *Crawler, err error)

NewCrawler 返回一个新的 Crawler

func (*Crawler) RegisterTaskTypes

func (c *Crawler) RegisterTaskTypes(dummyTasks ...Task) (err error)

RegisterTaskTypes 注册任务类型

func (*Crawler) Request

func (c *Crawler) Request(tasks ...Task) (err error)

Request 添加任务请求

func (*Crawler) RequestWithOptions

func (c *Crawler) RequestWithOptions(task Task, opts RequestOptions) (err error)

RequestWithOptions 添加一个任务请求, 带有设置

func (*Crawler) Run

func (c *Crawler) Run()

Run 启动爬虫

func (*Crawler) TaskLog

func (c *Crawler) TaskLog(level logger.Level, message string, values logger.Fields)

TaskLog 是供任务使用的 log 函数

func (*Crawler) WaitQuit

func (c *Crawler) WaitQuit() (errs []error)

WaitQuit 等待爬虫退出

type CrawlerOptions

type CrawlerOptions struct {
	// Dir 是爬虫的工作目录. 若 dir 已存在则尝试从 dir 复原爬虫的工作状态, 若 dir 不存在则创建之
	Dir string

	// NoDefaultFileLogger 若为真, 则不使用默认的 stdout logger
	NoDefaultStdoutLogger bool
	// DefaultLoggerLevel 是爬虫默认 stdout logger 的级别
	// 如果为 0 则会认作 LInfo
	DefaultStdoutLoggerLogLevel logger.Level
	// NoDefaultFileLogger 若为真, 则不使用默认的 file logger
	NoDefaultFileLogger bool
	// DefaultLoggerLevel 是爬虫默认 file logger 的级别
	// 如果为 0 则会认作 LInfo
	DefaultFileLoggerLogLevel logger.Level
	// Logger logger, 若 RemoveDefaultLogger 为真, 则为唯一的 logger, 否则与默认 logger 共存
	Logger logger.Logger

	// Scheduler 如果不为 nil, 则将替换掉爬虫的默认调度器
	Scheduler scheduler.Scheduler

	// DefaultWokerPoolWorkers 是默认任务池的 worker 数
	DefaultWorkerPoolWorkers int

	Mode scheduler.Mode
}

CrawlerOptions 包含了爬虫的各类设置选项

type FilterResult

type FilterResult int

FilterResult 是 filter 返回的结果

const (
	// FilterResultPass 同 ProcessResultSuccessful
	FilterResultPass FilterResult = FilterResult(taskqueue.ProcessResultSuccessful)
	// FilterResultShouldBeExcluded 同 ProcessResultShouldBeExcluded
	FilterResultShouldBeExcluded FilterResult = FilterResult(taskqueue.ProcessResultShouldBeExcluded)
	// FilterResultShouldBeFrozen 同 ProcessResultShouldBeFrozen
	FilterResultShouldBeFrozen FilterResult = FilterResult(taskqueue.ProcessResultShouldBeFrozen)
)

type RequestOptions

type RequestOptions = taskqueue.EnqueueOptions

RequestOptions 是任务请求的设置

type Task

type Task interface {
	Fetch(c *Crawler, self Task) (payload interface{}, err error)
	Process(c *Crawler, self Task, payload interface{}) (result taskqueue.ProcessResult, err error)
}

Task 是爬虫任务的接口

type WithFilter

type WithFilter interface {
	Filter(c *Crawler, self Task) (FilterResult, error)
}

WithFilter 实现此接口的任务会被调用 filter 以进行过滤

type WithPayloadDecorator

type WithPayloadDecorator interface {
	DecoratePayload(c *Crawler, self Task, payload interface{}) (decoratedPayload interface{}, err error)
}

WithPayloadDecorator 对 fetch 返回的 payload 进行装饰

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL