728x90
우연히 재미난 사이트를 알게 되었다.
https://cryptobubbles.net/ 라는 곳인데 암호화폐의 등락률을 버블 형태로 표현해주는 곳이다.
위 정보를 주기적으로 스냅샷을 떠서 확인할 수 있다면, 각 코인별 흐름을 참고할 수 있을 것 같았다.
생각했던 flow 는 대략 아래와 같다.
- python selenium 으로 특정 영역에 접근
- 특정 영역을 스냅샷 이미지로 저장
- 디스코드로 스냅샷 이미지 전달
Chat GPT 에게 질문을 통해 핵심 로직을 전달받았고, 약간의 수정을 통해 기능을 구현할 수 있었다.
사용중인 코드 전체로 의존성은 아래와 같다.
pip install selenium webdriver-manager discord-webhook
import time
from discord_webhook import DiscordWebhook, DiscordEmbed
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1920,1080')
options.add_argument('--start-maximized')
def capture_element_screenshot():
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.set_page_load_timeout(30)
driver.get('https://cryptobubbles.net/')
driver.implicitly_wait(10)
el = WebDriverWait(driver, 3).until(
EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/main/div[2]'))
)
time.sleep(10.0) # 버블이 자리를 잡을 정도의 시간을 벌어준다.
screenshot = el.screenshot_as_png
screenshot_path = 'cryptobubbles_screenshot.png'
with open(screenshot_path, 'wb') as file:
file.write(screenshot)
driver.quit()
return screenshot_path
def send_message(title, description, image_path):
webhook = DiscordWebhook(
'디스코드 웹훅 주소')
with open(image_path, "rb") as f:
webhook.add_file(file=f.read(), filename='img.jpg')
embed = DiscordEmbed(title=title, description=description, color='03b2f8')
embed.set_image(url='attachment://img.jpg')
webhook.add_embed(embed)
response = webhook.execute()
if response.status_code != 200:
print("[Discord 발송 실패] :: {}.".format(response))
if __name__ == '__main__':
screenshot_path = capture_element_screenshot()
send_message(title="실시간 Crypto Bubbles", description=None, image_path=screenshot_path)
728x90
'Python' 카테고리의 다른 글
주가 정보 액면 분할 적용하기 - 카카오(035720) 백테스팅 (0) | 2024.01.27 |
---|---|
맥북 M1 Max LangChain 설치하기 (1) | 2024.01.21 |
OpenAI API 사용하기 - 코드 첨부 (0) | 2023.03.12 |
TensorFlow / PyTorch GPU 사용하여 병렬처리 하기 (0) | 2023.02.26 |
[Selenium] 크롬 디버그 모드로 크롤링 하기 (0) | 2022.02.01 |