feat: 添加 CrawlService 爬取编排器 + 测试

This commit is contained in:
2026-05-09 13:50:58 +08:00
parent 5e0582d499
commit 022d348052
4 changed files with 122 additions and 0 deletions
View File
+36
View File
@@ -0,0 +1,36 @@
from typing import Dict, List
from app.crawler.base import BaseSpider, CrawlResult
class CrawlService:
def __init__(self):
self.spiders: Dict[str, BaseSpider] = {}
def register(self, spider: BaseSpider):
self.spiders[spider.name] = spider
async def run_all(self) -> List[CrawlResult]:
results = []
for name, spider in self.spiders.items():
result = await spider.crawl()
results.append(result)
return results
async def run_spider(self, name: str, **kwargs) -> List[CrawlResult]:
spider = self.spiders.get(name)
if spider is None:
return [CrawlResult(
source_code=name, source_name=name,
error_message=f"Spider not found: {name}"
)]
result = await spider.crawl(**kwargs)
return [result]
def get_spider_names(self) -> List[str]:
return list(self.spiders.keys())
def get_pipeline_config(self, name: str):
spider = self.spiders.get(name)
if spider:
return spider.get_pipeline_config()
return None