import * as puppeteer from 'puppeteer'; import { CrawlerOption } from './CrawlerOption'; import Spider from './spider/Spider'; import { CrawlerResult, SpiderResult, ParsedUrl } from './types'; import { CrawlerCache } from './CrawlerCache'; export interface CrawlerCallback { onStart: () => void; onFinish: () => void; } /** 爬虫定义 */ export default class Crawler { entryUrl: string; parsedEntryUrl: ParsedUrl | null; browser: puppeteer.Browser; crawlerCache?: CrawlerCache; crawlerOption: CrawlerOption; private spiders; private spiderQueue; private existedSpidersHash; private startTime; private isClosed; private spidersRequestMap; constructor(browser: puppeteer.Browser, crawlerOption: Partial); start(entryUrl: string): Promise; initEntrySpider(): Promise; /** 初始化超时监听函数 */ initMonitor(): Promise; next(): Promise; stats(): Promise; report(): Promise<{ [key: string]: SpiderResult[]; }>; _SPIDER_addRequest(spider: Spider, request: SpiderResult): void; /** 执行关闭函数 */ private finish; }