Etc

[Dev] 매크로 도전기

  • -
728x90

* 해당 글은 이전 벨로그에 작성한 글(링크) 을 그대로 가져온 것입니다.

왜 갑자기 매크로를 시도했을까?

코딩하는 사람이라면 누구나 시도해본다는(?) 갑자기 코딩하기!
개발자(지망생)로서 하고싶은게 생기면 참을 수 없던 나는 콘서트 실패 여파로 매크로 제작을 시도해보게 되었다.(참고로, 매크로를 통해 재산상 이득을 취하는 행위는 불법이라고 하니 모두 장사할 생각은 하지 맙시다! 저도 공부용으로 매크로를 만들어 보았습니다)

안녕하세요 콘서트 못가는 사람입니다!

유애나 아닌 사람이 아이유 콘서트 티켓팅에 시도했다! 똥손치고 정말 놀랍게도 생각보다 잘 들어갔으나(들어가자 마자 5천명!이었으니 제법 양호했다) 떨리는 손으로 좌석을 사이드의 사이드로 잘못 잡게 되었고, 잠실 주경기장 시야를 찾아보던 나는 결국 눈물을 머금고 표를 취소하게 되었다...


날린 좌석ㅎㅎㅎㅎㅎㅎㅎ...

매크로? 재밌겠다!

원래 매크로 자체에 흥미를 가지고 있기도 했었어서 이렇게 불타오른김에 재밌겠다! 라는 생각하나로 티켓날린 당일 밤 5시까지 아래 코딩을 진행했다. 결과는... 그렇게 잘 되지는 않았지만, 한번의 새벽을 희생해서 이만큼 해본것 자체가 너무 재밌고 의미있는 결과를 낳았다고 생각한다. 다음에도 무언가 불타오르는 것이 생기면 가차없이 시도해볼 생각이다!

어떻게 진행했을까

셀레니움 써보셨어요?

나는 크롤링을 위해 Beautiful soup만을 간단히 써보았고, 그 외에는 크롤링을 해본 경험조차 없었다. 엄청난 파이썬 초보인 내가 셀레니움을 써봤을리가 전무했다. 그럼에도 나중에 프로젝트에서라도 쓸 일이 있을 것 같아 이번기회에는 셀레니움을 써보았다.

처음 참고한 글들

https://ssamko.tistory.com/9
https://animoto1.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9B%B9%ED%81%AC%EB%A1%A4%EB%A7%81-1to50-%EB%A7%A4%ED%81%AC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0
https://sir.kr/so_python/273
https://gem1n1.tistory.com/38

다양한 오류

https://www.pythonfixing.com/2022/01/fixed-typeerror-webdriverinit-got.html
https://wikidocs.net/82611
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kiddwannabe&logNo=221288079822
https://jgpark.kr/766

카카오 로그인 실패

https://yobbicorgi.tistory.com/21
카카오 로그인은 2차 보안을 해두어서, 멜론 아이디 크롤링으로 변경하려 했는데, 이유는 모르겠으나, element가 잡히지 않아 카카오 2차 보안을 끄는 방향으로 변경하였다.

# 멜론 때려침
driver.find_element_by_class_name('melon').click()

# 카카오 로그인
sleep(2)
driver.close()
driver.switch_to.window(driver.window_handles[-1])
print(last_tab)
id_elem = driver.find_element_by_id('id')
id_elem.send_keys(my_id)

pass_elem = driver.find_element_by_id('pwd')
pass_elem.send_keys(my_pw)

sleep(1)
driver.find_element_by_xpath('//*[@id="login-form"]/fieldset/div[8]/button[1]').click()

현재 창 크롤링 시도

https://sh-safer.tistory.com/10
로그인 절차도 한번에 잘 진행되지는 않았어서 처음에는 현재 창(크롬을 terminal로 키고 그 안에서 로그인 한뒤, 그 크롬을 run하는 방식)을 시도했으나, 아래와 같은 수많은 오류... 에 맞닥드리며 현재 창 크롤링을 포기하게되었다.. 되었다 말다 하는 문제라서 어떤 오류인지 감도 오지않았다.

# 지금 크롬 열기

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "/Users/(이름)/Desktop/chromedriver"
driver = webdriver.Chrome(chrome_driver, options=chrome_options)

driver.get('https://ticket.melon.com/performance/index.htm?prodId=207126')

import 관련 문제가 발생했고, 원인이 셀레니움 버전 문제인것 같아 버전을 낮추었으나 여전히 적용이 되지 X

생각보다 깐깐한 멜티

심지어 새고도?!

https://ggondae.tistory.com/31
새로고침도 frame 안에 넣어두었다.. 이걸 몰라서 왜 새로고침 버튼 element가 안잡히냐면서 고생을 했다.

포도알은 쓰레기다

포도알(좌석)을 전부 rect 화 해놔서 좌표를 계산해야하는데 실제로 이 메크로를 사용할 생각이 없었던 나는 그냥 귀찮음에 포도알 잡기를 포기했다.
https://stackoverflow.com/questions/70135037/how-to-click-on-a-rect-tag-in-a-bar-graph-using-selenium

'Etc' 카테고리의 다른 글

[mac 초기 세팅]  (0) 2023.03.02
팀을 잘 이끄는 정리 Tip  (0) 2023.02.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.