From f736f3024822d27b40289a1b8d1b72606cf82451 Mon Sep 17 00:00:00 2001 From: dmy Date: Wed, 14 Jan 2026 22:51:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(crawler):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=88=AC=E8=99=AB=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89=E5=92=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 Crawler 接口替换为 AnyCrawler 类型,统一爬虫类型定义 导出 CrawlInfoAddStats 接口以便其他模块使用 简化爬虫调用方式,使用类型断言替代接口方法调用 --- src/bids/services/bid.service.ts | 2 +- src/crawler/services/bid-crawler.service.ts | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/bids/services/bid.service.ts b/src/bids/services/bid.service.ts index da91425..b14e427 100644 --- a/src/bids/services/bid.service.ts +++ b/src/bids/services/bid.service.ts @@ -15,7 +15,7 @@ interface SourceResult { source: string; } -interface CrawlInfoAddStats { +export interface CrawlInfoAddStats { source: string; count: number; latestUpdate: Date | string; diff --git a/src/crawler/services/bid-crawler.service.ts b/src/crawler/services/bid-crawler.service.ts index 4321525..f6ef2ec 100644 --- a/src/crawler/services/bid-crawler.service.ts +++ b/src/crawler/services/bid-crawler.service.ts @@ -24,10 +24,7 @@ interface CrawlResult { url: string; } -interface Crawler { - name: string; - crawl(browser: puppeteer.Browser): Promise; -} +type AnyCrawler = typeof ChdtpCrawler | typeof ChngCrawler | typeof SzecpCrawler | typeof CdtCrawler | typeof EpsCrawler | typeof CnncecpCrawler | typeof CgnpcCrawler | typeof CeicCrawler | typeof EspicCrawler | typeof PowerbeijingCrawler | typeof SdiccCrawler | typeof CnoocCrawler; @Injectable() export class BidCrawlerService { @@ -50,7 +47,7 @@ export class BidCrawlerService { const crawlResults: Record = {}; // 记录数据为0的爬虫,用于重试 - const zeroDataCrawlers: Crawler[] = []; + const zeroDataCrawlers: AnyCrawler[] = []; // 从环境变量读取代理配置 const proxyHost = this.configService.get('PROXY_HOST'); const proxyPort = this.configService.get('PROXY_PORT'); @@ -114,7 +111,7 @@ export class BidCrawlerService { } try { - const results = await crawler.crawl(browser); + const results = await (crawler as any).crawl(browser); this.logger.log( `Extracted ${results.length} items from ${crawler.name}`, ); @@ -184,7 +181,7 @@ export class BidCrawlerService { } try { - const results = await crawler.crawl(browser); + const results = await (crawler as any).crawl(browser); this.logger.log( `Retry extracted ${results.length} items from ${crawler.name}`, ); @@ -337,7 +334,7 @@ export class BidCrawlerService { try { this.logger.log(`Crawling: ${targetCrawler.name}`); - const results = await targetCrawler.crawl(browser); + const results = await (targetCrawler as any).crawl(browser); this.logger.log( `Extracted ${results.length} items from ${targetCrawler.name}`, );