INSPECT
[Python+GAE+Telegram Bot 오버워치 전적검색기]-1 본문
[Python+GAE+Telegram Bot 오버워치 전적검색기]
요즘 오버워치에 빠져 게임을 하다 오버워치 전적검색을 메신저로 하면 편하겠다는 생각이 들어 만들기 시작했다. 메신저는 공식 봇을 제공하는 텔레그램 봇을 이용하기로 했다.
오버워치 전적검색은 오버워치 유저들이 많이 쓰는 오버로그 (http://overlog.gg/)를 사용했다.
먼저 Python으로 스크립트를 작성해보았다. 오버로그에서 전적 검색을 하려면 플레이어 이름으로 검색하고 자신의 이름을 눌러 확인 가능하다.
처음엔 검색을 하고 자신의 이름을 눌러 확인하는 절차로 만드려고 했지만 오버로그에서 막아놓은 것인지 실력이 부족한 탓인지 실패했다.
그래서 이 페이지, 배틀코드까지 치면 바로 나오는 유저의 페이지를 크롤링하기로 마음먹고 만들었다.
오버로그에서 검색창에 접근하기 위해 mechanize 모듈을 사용했다.
먼저 플레이어이름과 배틀코드(#숫자로 구성되어있는)를 입력받아 nickname이라는 변수에 저장한다.
mechanize모듈을 이용해 검색폼에 접근하고 검색 폼에 nickname을 넣고 전송시킨다. mechanize모듈의 사용법은
http://egloos.zum.com/Dplex/v/4361477
http://www.stechstar.com/user/zbxe/index.php?mid=AlgorithmPython&page=4&document_srl=5320
https://songhyonkim.gitbooks.io/web-programming-howto/content/web_scraping.html
과 구글링을 통해 여러 페이지를 참고해 공부했다.
이후 beautifulsoup를 이용해 크롤링할 페이지를 정리하는 일만 남았다. 위 화면의 결과는 아래와 같다.
다음은 통계들을 긁어온 소스와 결과이다.
역할별 통계에서 항목 이름들을 긁어올 수 있었지만 밑에 나오는 수치들과 정렬이 잘 되지 않아 위와 같이 그냥 띄어쓰기로 출력했다.
수치들이 띄어쓰기와 개행이 많이 포함되어 있어 정리가 안되어 replace와 strip을 이용해 개행과 공백들을 없애고 정렬시켰다.
마지막엔 자세한 정보를 보고 싶은 유저들을 위해 자신의 오버로그 페이지로 연결되는 주소를 걸어놓았다.
cf) 유저이름 입력 받는 부분에서 한글을 치면 encoding에러가 나서 애를 먹었다. 열심히 구글링하여 결국 찾아낸 해결방법은
.decode('cp949').encode('utf-8')를 붙여 입력받는 것이었다.
'Python' 카테고리의 다른 글
Python Django-1 (0) | 2017.01.02 |
---|---|
[Python+GAE+Telegram Bot 오버워치 전적검색기]-2 (2) | 2016.09.13 |
[PEfile Module] 사용 (0) | 2016.05.05 |
[XML parsing] AndroidManifest.xml 파싱 (0) | 2016.01.23 |
[os.walk] 특정 디렉터리의 모든 파일명 알아오기 (0) | 2016.01.23 |