package downloader import ( base "evilboy/base" mdw "evilboy/middleware" "evilboy/tool/log" "net/http" ) // ID生成器。 var downloaderIdGenertor mdw.IdGenertor = mdw.NewIdGenertor() // 生成并返回ID。 func genDownloaderId() uint32 { return downloaderIdGenertor.GetUint32() } // 网页下载器的接口类型。 type PageDownloader interface { Id() uint32 // 获得ID。 Download(req base.Request) (*base.Response, error) // 根据请求下载网页并返回响应。 } // 创建网页下载器。 func NewPageDownloader(client *http.Client) PageDownloader { id := genDownloaderId() if client == nil { client = &http.Client{} } return &myPageDownloader{ id: id,
package analyzer import ( "errors" base "evilboy/base" mdw "evilboy/middleware" "evilboy/tool/log" "fmt" "net/url" ) // ID生成器。 var analyzerIdGenertor mdw.IdGenertor = mdw.NewIdGenertor() // 生成并返回ID。 func genAnalyzerId() uint32 { return analyzerIdGenertor.GetUint32() } // 分析器的接口类型。 type Analyzer interface { Id() uint32 // 获得ID。 Analyze( respParsers []ParseResponse, resp base.Response) ([]base.Data, []error) // 根据规则分析响应并返回请求和条目。 } // 创建分析器。 func NewAnalyzer() Analyzer { return &myAnalyzer{id: genAnalyzerId()} }