From 0fc1a7ab89241d4577590548549eb5f1035d2bb1 Mon Sep 17 00:00:00 2001 From: zzx Date: Tue, 22 Jul 2025 20:30:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(ai=5Fseo):=20=E4=BF=AE=E5=A4=8D=20Kimi=20?= =?UTF-8?q?=E5=92=8C=20Metaso=20=E7=88=AC=E8=99=AB=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Kimi爬虫中添加错误处理逻辑,当 API 返回错误时终止爬取 - 更新 Metaso 爬虫中的复制按钮选择器,以适应网页结构变化 --- spiders/ai_seo/kimi.py | 9 +++++++++ spiders/ai_seo/metaso.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spiders/ai_seo/kimi.py b/spiders/ai_seo/kimi.py index 1131120..7547fef 100644 --- a/spiders/ai_seo/kimi.py +++ b/spiders/ai_seo/kimi.py @@ -9,6 +9,8 @@ from domain.ai_seo import AiAnswer, AiSearchResult from utils import create_logger from glom import glom, Coalesce +from utils.ai_seo_api_utils import AiSeoApis + logger = create_logger(__name__) @@ -52,6 +54,7 @@ class KimiSpider(AbstractAiSeoSpider): # 报错检查 if self.fail_status: + await AiSeoApis.update_spider_session(self.session_info['id'], 2) raise self.fail_exception # 关闭侧边栏 @@ -85,6 +88,12 @@ class KimiSpider(AbstractAiSeoSpider): if json_data['items']: logger.debug(json_data) detail = json_data['items'][-1] + if 'error' in detail: + logger.error(f"kimi回复错误: {detail['error']['detail']}") + self.fail_status = True + self.fail_exception = Exception(detail['error']['detail']) + self.completed_event.set() + return content = detail['content'] if self.think: self.ai_answer.search_result = self.get_search_list_enable_think(detail) diff --git a/spiders/ai_seo/metaso.py b/spiders/ai_seo/metaso.py index 28cd9a5..e68964e 100644 --- a/spiders/ai_seo/metaso.py +++ b/spiders/ai_seo/metaso.py @@ -55,7 +55,7 @@ class MetasoSpider(AbstractAiSeoSpider): # await self.completed_event.wait() # 等待指定元素 #//*[@id="search-content-container-8626530479804592128"]/div[2]/button - copy_button = await self.browser_page.wait_for_selector('//*[starts-with(@id, "search-content-container-")]/div[2]/button', timeout=600000) + copy_button = await self.browser_page.wait_for_selector('//*[starts-with(@id, "search-content-container-")]/div[2]/div[3]/button', timeout=600000) # 点击复制按钮 await copy_button.click() # 读取剪贴板