|
|
@ -9,6 +9,7 @@ from playwright.async_api import Browser, BrowserContext, Page |
|
|
import config |
|
|
import config |
|
|
from domain.ai_seo import AiAnswer |
|
|
from domain.ai_seo import AiAnswer |
|
|
from utils import create_logger |
|
|
from utils import create_logger |
|
|
|
|
|
from utils.ai_seo_api_utils import AiSeoApis |
|
|
from utils.session_utils import get_spider_session |
|
|
from utils.session_utils import get_spider_session |
|
|
|
|
|
|
|
|
logger = create_logger("abs_spider") |
|
|
logger = create_logger("abs_spider") |
|
|
@ -67,10 +68,11 @@ class AbstractAiSeoSpider(ABC): |
|
|
screenshot_path = f'{config.SCREENSHOT_BASE_PATH}/{self.platform_name}_{unique_id}.png' |
|
|
screenshot_path = f'{config.SCREENSHOT_BASE_PATH}/{self.platform_name}_{unique_id}.png' |
|
|
return screenshot_path |
|
|
return screenshot_path |
|
|
|
|
|
|
|
|
async def __init_page(self): |
|
|
|
|
|
|
|
|
async def __init_page(self, id=''): |
|
|
if self.load_session: |
|
|
if self.load_session: |
|
|
self.session_info = await get_spider_session(self.platform_id) |
|
|
|
|
|
|
|
|
self.session_info = await get_spider_session(self.platform_id, id) |
|
|
if self.platform_id != 8: |
|
|
if self.platform_id != 8: |
|
|
|
|
|
print(self.session_info['session_path']) |
|
|
self.browser_content = await self.browser.new_context(storage_state=self.session_info['session_path']) |
|
|
self.browser_content = await self.browser.new_context(storage_state=self.session_info['session_path']) |
|
|
else: |
|
|
else: |
|
|
self.browser_content = await self.browser.new_context() |
|
|
self.browser_content = await self.browser.new_context() |
|
|
@ -118,6 +120,25 @@ class AbstractAiSeoSpider(ABC): |
|
|
finally: |
|
|
finally: |
|
|
await self._close() |
|
|
await self._close() |
|
|
|
|
|
|
|
|
|
|
|
async def check_session(self, session_id) -> bool: |
|
|
|
|
|
await self.__init_page(session_id) |
|
|
|
|
|
result = await self.do_check_session() |
|
|
|
|
|
await self._close() |
|
|
|
|
|
if result: |
|
|
|
|
|
logger.success(f"[{self.get_platform_name()}]session状态有效! ✅ id: {session_id}") |
|
|
|
|
|
else: |
|
|
|
|
|
logger.error(f"[{self.get_platform_name()}]session状态无效! ❌ id: {session_id}") |
|
|
|
|
|
|
|
|
|
|
|
# 更新session状态 |
|
|
|
|
|
status = None |
|
|
|
|
|
if self.get_platform_id() != 13: |
|
|
|
|
|
status = 1 if result else 2 |
|
|
|
|
|
else: |
|
|
|
|
|
status = 1 if result else 3 |
|
|
|
|
|
await AiSeoApis.update_spider_session(session_id, status) |
|
|
|
|
|
return result |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@abstractmethod |
|
|
@abstractmethod |
|
|
async def _do_spider(self) -> AiAnswer: |
|
|
async def _do_spider(self) -> AiAnswer: |
|
|
""" |
|
|
""" |
|
|
@ -137,3 +158,6 @@ class AbstractAiSeoSpider(ABC): |
|
|
@abstractmethod |
|
|
@abstractmethod |
|
|
def get_home_url(self) -> str: |
|
|
def get_home_url(self) -> str: |
|
|
pass |
|
|
pass |
|
|
|
|
|
@abstractmethod |
|
|
|
|
|
async def do_check_session(self) -> bool: |
|
|
|
|
|
pass |