base_playwright_browser.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. """
  3. 消息模块基础, 用于打开浏览器等相关操作
  4. """
  5. import random
  6. from playwright.sync_api import sync_playwright
  7. import time
  8. class CryptoCrawler:
  9. def __init__(self, url, selector, headless=True):
  10. self.url = url
  11. self.selector = selector
  12. self.headless = headless
  13. def main(self):
  14. with sync_playwright() as playwright:
  15. browser = playwright.webkit.launch(headless=self.headless)
  16. if self.headless:
  17. context = browser.new_context()
  18. else:
  19. context = browser.new_context(viewport={'width': 1920, 'height': 1080})
  20. page = context.new_page()
  21. result = ""
  22. try:
  23. page.goto(self.url)
  24. page.wait_for_load_state('load')
  25. time.sleep(2) # 确保页面完全加载
  26. element = page.query_selector(self.selector)
  27. if element:
  28. res = element.text_content().strip()
  29. result = res
  30. except Exception as e:
  31. err_str = f"Error fetching {self.url}: {e}"
  32. return err_str
  33. page.close()
  34. browser.close()
  35. if result:
  36. return result
  37. return None