[python] Selenium - riot key 가져오기 #2

ddalkigum·2020년 11월 18일
2

python

목록 보기
2/3
post-thumbnail

첫 시도

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains


driver = webdriver.Chrome()
driver.implicitly_wait(2)
driver.get("http://www.google.com")
search = driver.find_element_by_name("q")
search.send_keys("riot games api")
search.send_keys(Keys.RETURN)

riot = driver.find_element_by_xpath(".//a")
riot.send_keys(Keys.RETURN)

처음에는 구글링 하면서 찾아본 결과
xpath를 이용해서 첫번째 링크를 찾아서 enter를 누르면 들어가지지 않을까 해서
이렇게 짜봣다.

완전 실패 ㅋㅋㅋㅋㅋ

실패

riot = driver.find_element_by_tag_name("h3")
for r in range(10):
    if r == 0:
        riot.send_keys(Keys.RETURN)

이게 두번째 시도했던 방법이다.
혹시나 BeautifulSoup에서 find_all 처럼 모든 h3태그가 선택되지 않을까해서
처음있는걸 엔터키로 들어가보자 생각했다.
물론 찾지도 못했지만, 만약에 찾았어도 문제가 있엇다


요런식으로 가끔 광고가 나와서 성공했어도 코드를 바꿔야 됬다.

또 안됨....

찾다보니 ActionChain이란게 있어서 이걸로 한번 써보면 괜찮겟다....
싶어서 코드를 짜봣는데

네... 다음 🐒🐒🐒🐒🐒🐒🐒🐒🐒

성공함


driver.implicitly_wait(2)
riot = driver.find_element_by_css_selector(".LC20lb")
riot.click()
riot_login = driver.find_element_by_css_selector(".navbar-avatar")
riot_login.click()
driver.implicitly_wait(2)

생각보다 너무 간단하게 끝나서... 좀 허무 했다
css_selector로 클래스 이름을 찾아서 들어갔다

이제 로그인하고 api키를 가져와보자

로그인

riot = driver.find_element_by_css_selector(".LC20lb")
riot.click()
riot_login = driver.find_element_by_css_selector(".navbar-avatar")
riot_login.click()
driver.implicitly_wait(2)
username = driver.find_element_by_name("username")
username.send_keys(os.getenv("USERNAME"))
password = driver.find_element_by_name("password")
password.send_keys(os.getenv("PASSWORD"))
enter = driver.find_element_by_css_selector(".mobile-button")
enter.click()

접속을 하고 로그인 하는데 까지는 어렵지 않았다.
어떻게 해야되는지 알아서 코드 쭉 적고, 바로 실행해서 로그인까지 됬다.
여기까지 진행하고 나면

요렇게 api키와 갱신할 수 있는 버튼이 나온다
이제 저 버튼을 누르고 카피해주고, path를 설정해서 내 코드를 바꿔주면 된다.

Api-key 가져오기

code

driver.implicitly_wait(5)
regenerate = driver.find_element_by_name("confirm_action")
regenerate.click()
copy_api = driver.find_element_by_id("apikey_copy")
copy_api.click()

일단 코드는 이렇게 짜서 실행해 봤는데 잘 돌아간다.
완료하고 나면 Copy적혀있는 회색 버튼이 Copied로 바뀐다.
이걸로 카피가 됬는지 확인하면 된다.


후기

Riot의 경우 api키를 발급받고 나면, 유효기간이 하루뿐이라
업데이트 되거나, 내가 정보를 가지고 오고싶을 때마다 항상 갱신을 해줘서,
불편해서 api키를 자동으로 가지고 오면 좀 편하겠다 싶어서 만들어봤다.

사실 request, beautiful 이용해서 하는 크롤링이랑 크게 다를게 없어서
공식문서 읽어보고, 구글링하면서 만드는데 어렵지 않앗다.
이걸로 업데이트 되면 자동으로 key 갱신해서 사용하면 될 것 같다.

ActionChain을 이용해서 조금더 복잡한 행동도 가능하니
한번 써보겠습니다.

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

0개의 댓글